Ftpを使用してバックアップアーカイブをあるサーバーから別のサーバーにアップロードしたい。私のバックアップcronjobでは、このスクリプトを使用してファイルをアップロードします。
MEDIAFILE=/var/somedir/somefile.encrypted
if [ -r $MEDIAFILE ]
# File seems to exist and is readable
then
ftp -n $FTPHOST <<END_SCRIPT
quote USER $FTPUSER
quote PASS $FTPPASS
cd backups
put $MEDIAFILE
quit
END_SCRIPT
fi
このスクリプトは以下を返します:/ var/somedir/somefile.encrypted:No such file or directory。ただし、ファイルは存在し、スクリプトを実行するユーザーにはファイルを読み取る権限があります。
このエラーの原因は何ですか?
さて、私はこれを最初に行うべきでした:
FTPHOST="domain.com"
FTPUSER="xxxxxx"
FTPPASS="xxxxxxxxx"
MEDIAFILE=/path/to/something.enc
if [ -r $MEDIAFILE ]
# File seems to exist and is readable
then
ftp -n $FTPHOST <<END_SCRIPT
quote USER $FTPUSER
quote PASS $FTPPASS
cd backups
bin
put $MEDIAFILE something.enc
quit
END_SCRIPT
fi
Putするリモートファイル名を追加しました。binコマンド(テスト済みで動作します)が役立つことを願っています。
編集:説明する必要があります。リモートパスが指定されていない場合(2番目のパラメーター)、putコマンドはリモートパスがローカルパスと同じであると想定します。リモートパスがないと、リモートサーバーでファイルが見つかりませんでした。
変数に値を割り当てるときは、ドル記号を使用しないでください。したがって、次のコードを試してください。
MEDIAFILE="/var/somedir/somefile.encrypted"
if [ -r $MEDIAFILE ]; # File seems to exist and is readable
then
ftp -n $FTPHOST <<END_SCRIPT
quote USER $FTPUSER
quote PASS $FTPPASS
cd backups
put $MEDIAFILE
quit
END_SCRIPT
fi