2

私はこの非常に単純なbashスクリプトを持っています:

#!/opt/bin/bash
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/bkp /volume1/backups/sql 2>&1 > /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/www/vhosts /volume1/backups/vhosts 2>&1 >> /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics myhost::/etc /volume1/backups/etc 2>&1 >> /var/log/rdiff-backup.log;
/opt/bin/rdiff-backup --force --print-statistics /volume1/homes /volume1/backups/homes 2>&1 >> /var/log/rdiff-backup.log;
cat /var/log/rdiff-backup.log | /opt/bin/nail -s "rdiff-backup log" me@email.com;

この方法でコマンド ラインからスクリプトを実行すると、次のようになります。

nohup /path/to/my/scipt.sh &

正常に動作し、各 rdiff-backup 統計レポートを rdiff-backup.log に追加し、このファイルを私の電子メール アドレスに送信します。しかし、スクリプトを crontab に入れると、スクリプトは電子メールで統計を送信する rdiff-backup ジョブを 1 つだけ作成します。スクリプトが同じように動作しないため、理解できません...

何か案が?

これは私のcronjobエントリです:

30 19 * * * /opt/bin/bash /volume1/backups/backup.sh

crontab を使用すると、最後のジョブのみが正しく実行されます。これは、ローカル バックアップが 1 つしかないためだと思います。コマンド ラインからスクリプトを実行するときは、root ユーザーを使用します。root ユーザーの公開鍵は、リモート マシンの /root/./ssh/authorized_keys にあります。crontab ファイルの所有者も root ユーザーです。root アカウントを使用して「crontab -e」で作成しました。

4

1 に答える 1

1

まず、cron で使用されるスクリプトが何も出力しないことを確認する必要があります。

  1. cron はエラーがあると想定します
  2. エラーは表示されません

これに対する解決策は、使用することです

30 19 * * * /opt/bin/bash /volume1/backups/backup.sh 2>&1 >> /var/log/rdiff-backup-cron.log;

次に、cron 経由で実行すると環境変数が失われているようです。環境設定をスクリプトに追加してみてください。

#!/opt/bin/bash
. /root/.profile
/opt/bin/rdiff-backup --force --print-statistics myhost::/var/bkp /volume1/backups/sql 2>&1 > /var/log/rdiff-backup.log

そう/root/.profileでない場合は、存在する. /root/.bashrcか追加してみてください/etc/profile

これが役立つことを願っています。

于 2013-03-25T14:47:11.680 に答える