cron の週次バックアップの日付を設定するにはどうすればいいですか?

cron の週次バックアップの日付を設定するにはどうすればいいですか?

cronフラッシュドライブの自動バックアップを行うコマンドを作成しています。バックアップを作成するために
使用します。 問題は、正しい日付を取得するコマンドをどのように記述するかです。 tar ... -N <some date>

のために週次バックアップ私は次のことを考えました:
date -d '1 week ago' +%Y%m%d
date -d 'monday week ago' +%Y%m%d

しかし、cron でスケジュールされた時間 (月曜日の翌日) にラップトップの電源がオフになると、状況は複雑になります。たとえば、anacron が火曜日にジョブを取得するとします。最初の方法では、前の月曜日からのすべての変更が失われます。2 番目の方法では、前の週全体が失われます。これは、anacron によってバックアップが作成される場合
date -d 'monday 1 week ago' +%Y%m%dと同じですdate -d 'monday week ago' +%Y%m%d
date -d 'monday 2 week ago' +%Y%m%dが、cron の場合 (通常のケース) には 1 週間余分に残ります。

バックアップ時間を anacron と互換性のあるものにするにはどうすればよいでしょうか?

答え1

アイデアとしては、バックアップが実行されるたびに、バックアップ スクリプトがtouchファイルを して現在の日付を記録します。次にバックアップを実行するときは、前回のバックアップの日付スタンプ ファイルを の引数として使用しますtar -N。たとえば、シェル スクリプトでは、ロジックは次のようになります。

# Begin the latest backup run now.
touch /backups/new-backup-time

tar -N /backups/prev-backup-time -c ... ...

# Save the latest backup time for the next run.
mv /backups/new-backup-time /backups/prev-backup-time

tar -Nこれは、オプションが日付であるか、またはデータ変更時刻によって日付が指定されるファイルのパス名であるかによって決まります。

関連情報