如何设置 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可以是日期,也可以是数据修改时间指定日期的文件的路径名。

相关内容