rsync-books
crontabを使って実行しようとしています。入力crontab -e
結果:
55 12 * * * diegoaguilar /storage/bin/rsync-books
次/storage/bin/rsync-books
のように見えます。
if [ -d "/media/Beagle/books" ]; then
rsync -rP --delete --verbose /storage/Copy/Books/ /media/Beagle/books >> ~/rsync-books.log
fi
確認のためにスクリプトに実行権限があります。私はwaitコマンドを試していて、/media/Beagle/booksが存在したときに何もrsyncされず、ログファイルも生成されませんでした。
私が逃したものはありますか?
答え1
Cronは環境なしでコマンドを実行するため、PATH
変数は設定されません。したがって、rsync
スクリプトでフルパスを指定する必要があります。
if [ -d "/media/Beagle/books" ]; then
/usr/bin/rsync -rP --delete --verbose /storage/Copy/Books/ /media/Beagle/books >> ~/rsync-books.log
fi
また、実行している場合は、crontab -e
crontabエントリにユーザー名を含めないでください。あなたのcrontabは次のようになります
55 12 * * * /storage/bin/rsync-books
編集:cronは非対話型シェルで実行されるため、環境(およびパス)が期待したものと異なる場合があります。 cronで実行するスクリプトへのフルパスを指定するのが最善です。