【发布时间】:2020-12-02 12:46:52
【问题描述】:
我正在尝试为 crontab 创建一个命令来压缩每个新/更新的文件(从 cron 上次运行时开始)。 cron 必须每 5 小时运行一次。
- 我要备份文件夹
/home/swayraines中包含的所有文件,包括其子文件夹 - 我想用这些文件在这里保存一个 tar
folder/backup/back.tar - crontab 必须每 5 小时运行一次
- 只有自上次执行 cron 以来添加或编辑过的文件才需要添加到存档中。因此,除非它是新的/编辑过的,否则不应保存。
- 我想将结果保存在包含 stdout 和 stderr 的日志中
folder/backup/backlog.log
所以我认为最好的方法是 find 在过去 5 小时内添加/编辑的文件,然后 tar 这些文件,然后在 .log 中输出 stdout 和 stderr 但它不起作用,我'我不确定出了什么问题。
这是目前的样子(已更新以包含部分答案):
0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;
更新 问题是现在每次运行 crontab 时它都会创建一个新的 tar 存档,并且存档只包含最新添加的文件。
更新 2
为了清楚起见,我一开始说我想每 5 小时创建一个新存档,但我想更新存档并仅附加新文件。所以我相信我需要将tar命令更改为-uvf?
【问题讨论】:
-
您当前的计划将每 5 小时运行一次,直到 20:00,然后在 4 小时后运行下一次。如果你真的想每 5 小时执行一次,你需要一个更详细的时间表。但如果保持稳定很重要,也许每 4 小时或每 6 小时运行一次会更简单。
-
这是个好建议。会考虑到这一点。