私は学校の課題のためにGFFSバックアップスクリプトを作成していますが、いくつかの問題が発生しました。仕組みは次のとおりです。
/etc/backup/backup.sh PERIOD NUMBER
cronに次の行を追加しました。
# m h dom mon dow command
# Backup for fileserver:
#daily: 5 times/week
0 23 * * 1-5 /etc/backup/backup.sh daily $(date -d "-1 day" +%w)
#weekly: 5 times/month
10 23 * * 7 /etc/backup/backup.sh weekly $((($(date +%-d)-1)/7+1))
#monthly: 12 times/year
20 23 1 * * /etc/backup/backup.sh monthly $(date -d "-1 day" +%m)
#yearly: each year
0 3 1 1 * /etc/backup/backup.sh yearly $(date -d "-1 day" +%Y)
最後の計算は、以前のバックアップを上書きするかどうかを知ることです。手動で実行すると完璧に動作しますが、cronで実行すると奇妙なことが起こります。毎週のバックアップ項目について話しています。計算では、その月の週数を指定する必要があります。 「grep CRON /var/log/syslog」を実行して次の行を見つけました。
Dec 19 14:33:01 BE-SV-04 CRON[5445]: (root) CMD (/etc/backup/backup.sh weekly $((($(date +)
cronが計算を正しく実行していないようです。助けが必要ですか?
ベストアンサー1
「%」記号を避けるべきだと思います。
だからこれ:
0 23 * * 1-5 /etc/backup/backup.sh daily $(date -d "-1 day" +\%w)
...作業する必要があります。どちらをエスケープすべきかわかりません。 +と%だと思います。試してみてください。 *cron でこの操作を実行するときは、次のように、より見苦しい逆引用符構文を使用してコマンドを実行し、コマンドもエスケープする必要があります。 *
0 1 * * * something >> bla\`date \+\%Y_\%m_\%d\`.log