如何設定 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 在周二接受這份工作。對於第一個變體,我錯過了上週一的所有更改。第二個變體錯過了前一周的情況。與透過 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 的(常規情況)中多了一周。

知道嗎,我怎麼能讓備份時間 anacron 相容?

答案1

這裡有一個想法:每次執行備份時,備份腳本都會透過touch檔案記錄當前日期。下次執行備份時,它將使用上一個備份的日期戳記檔案作為 的參數tar -N。例如,在 shell 腳本中,邏輯可能如下所示:

# 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選項可以是日期,也可以是資料修改時間指定日期的檔案的路徑名稱。

相關內容