私はこの非常に単純な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」で作成しました。