我正在編寫一個命令來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
選項可以是日期,也可以是資料修改時間指定日期的檔案的路徑名稱。