我正在使用 rsnapshot 设置备份。它现在由 cron 运行,但不是在我预期的时间/间隔内运行。
以下是时间表。这样做是为了尽量减少重叠备份。这应该每半小时生成 8 个备份,然后每小时生成 8 个备份,然后每两小时生成 18 个备份,依此类推。
Hour 0 1 2 3 4 5 6 7 8 9 10 11
-------------|-------------------------------------------------------------------
half-hourly | x x x x
hourly | x x x x x x
two-hourly | x x x x x x... (24)
daily |(7)
weekly |(4)
萃取自/etc/rsnapshot
interval halfhourly 4
interval hourly 6
interval twohourly 24
interval daily 7
interval weekly 4
这是从星期一 00:00 到 14:00 的结果。
root@hemulen:~# ls -lat /var/backups/snapshots/
total 48
drwxr-xr-x 12 root root 4096 Sep 20 13:32 .
drwxr-xr-x 4 root root 4096 Sep 20 13:32 halfhourly.0
drwxr-xr-x 4 root root 4096 Sep 20 12:32 halfhourly.1
drwxr-xr-x 4 root root 4096 Sep 20 11:32 halfhourly.2
drwxr-xr-x 4 root root 4096 Sep 20 10:32 halfhourly.3
drwxr-xr-x 4 root root 4096 Sep 20 09:33 hourly.0
drwxr-xr-x 4 root root 4096 Sep 20 07:32 hourly.1
drwxr-xr-x 4 root root 4096 Sep 20 05:32 hourly.2
drwxr-xr-x 4 root root 4096 Sep 20 03:32 hourly.3
drwxr-xr-x 3 root root 4096 Sep 20 02:38 ..
drwxr-xr-x 4 root root 4096 Sep 20 02:33 hourly.4
drwxr-xr-x 4 root root 4096 Sep 20 01:32 hourly.5
这是 crontab。
30 * * * * /usr/bin/rsnapshot halfhourly >> /var/log/rsnapshot.run.log 2>&1
0 1,3,5,7,9,11,13,15,17,19,21,23 * * * /usr/bin/rsnapshot hourly >> /var/log/rsnapshot.run.log 2>&1
0 */2 * * * /usr/bin/rsnapshot two-hourly >> /var/log/rsnapshot.run.log 2>&1
0 3 * * * /usr/bin/rsnapshot daily >> /var/log/rsnapshot.run.log 2>&1
0 6 * * MON /usr/bin/rsnapshot weekly >> /var/log/rsnapshot.run.log 2>&1
我做错了什么?我在这里遗漏了什么?
我修改了它,现在已经运行了一周。我把存储 12 个备份的频率降低到每两小时一次。
drwxr-xr-x 5 root root 4096 Sep 27 09:33 halfhourly.0
drwxr-xr-x 5 root root 4096 Sep 27 09:03 halfhourly.1
drwxr-xr-x 5 root root 4096 Sep 27 08:33 halfhourly.2
drwxr-xr-x 5 root root 4096 Sep 27 08:04 halfhourly.3
drwxr-xr-x 5 root root 4096 Sep 27 07:33 hourly.0
drwxr-xr-x 5 root root 4096 Sep 27 06:33 hourly.1
drwxr-xr-x 5 root root 4096 Sep 27 05:33 hourly.2
drwxr-xr-x 5 root root 4096 Sep 27 04:33 hourly.3
drwxr-xr-x 5 root root 4096 Sep 27 02:33 hourly.4
drwxr-xr-x 5 root root 4096 Sep 27 01:33 hourly.5
drwxr-xr-x 5 root root 4096 Sep 27 00:33 twohourly.0
drwxr-xr-x 5 root root 4096 Sep 26 22:33 twohourly.1
drwxr-xr-x 5 root root 4096 Sep 26 21:33 twohourly.2
drwxr-xr-x 5 root root 4096 Sep 26 19:33 twohourly.3
drwxr-xr-x 5 root root 4096 Sep 26 17:33 twohourly.4
drwxr-xr-x 5 root root 4096 Sep 26 15:33 twohourly.5
drwxr-xr-x 5 root root 4096 Sep 26 13:33 twohourly.6
drwxr-xr-x 5 root root 4096 Sep 26 11:33 twohourly.7
drwxr-xr-x 5 root root 4096 Sep 26 09:33 twohourly.8
drwxr-xr-x 5 root root 4096 Sep 26 07:33 twohourly.9
drwxr-xr-x 5 root root 4096 Sep 26 05:34 twohourly.10
drwxr-xr-x 5 root root 4096 Sep 26 02:33 twohourly.11
drwxr-xr-x 5 root root 4096 Sep 25 21:33 daily.0
drwxr-xr-x 5 root root 4096 Sep 24 21:33 daily.1
drwxr-xr-x 4 root root 4096 Sep 23 21:33 daily.2
drwxr-xr-x 4 root root 4096 Sep 22 21:33 daily.3
drwxr-xr-x 4 root root 4096 Sep 21 21:33 daily.4
drwxr-xr-x 4 root root 4096 Sep 20 21:32 daily.5
定时任务
0,30 * * * * /usr/bin/rsnapshot halfhourly >> /var/log/rsnapshot.halfhourly.log 2>&1
5 * * * * /usr/bin/rsnapshot hourly >> /var/log/rsnapshot.hourly.log 2>&1
10 */2 * * * /usr/bin/rsnapshot twohourly >> /var/log/rsnapshot.twohourly.log 2>&1
15 3 * * * /usr/bin/rsnapshot daily >> /var/log/rsnapshot.daily.log 2>&1
20 6 * * MON /usr/bin/rsnapshot weekly >> /var/log/rsnapshot.weekly.log 2>&1
每周似乎还不起作用,但将 MON 更改为 1 可能会解决问题。每两小时并不总是每两小时
答案1
您必须了解 rsnapshot 如何生成备份。
首先:只有您定义的第一个间隔才会拍摄快照,所有其他间隔只会移动旧快照。
在您的示例中:
interval halfhourly 4
首先将旧快照从 halfhourly.n 移动到 halfhourly.n+1。然后在 halfhourly.0 中拍摄新快照。
当您运行其他作业(每小时、每两小时、每天、每周)时,它们只会获取前一个作业的最后一个快照。因此: hourly.4 移动到 twohourly.0 twohourly.24 移动到 daily.0 daily.7 移动到 weekly.0
这解释了为什么快照的时间戳始终为 .32。因为它实际上是一个“半小时”快照,后来被移至“每小时”。
希望这对你有帮助,亚历克斯
答案2
我对 rsnapshot 不太熟悉。但我有几个问题。首先,检查 /var/log/rsnapshot.run.log,确保那里的信息与您在 /var/backup 中检查的目录名称相匹配。错误消息可能有助于阐明问题。
检查日志并查看运行的时间。如果需要,将日志分成单独的文件,方法是制作日志:/var/log/rsnapshot.run.$$.log.
这会将 PID 放入其中,并使它们唯一。
其次,您能提供一下backup
脚本的各部分吗?我很好奇备份文件应该放在哪里。这里的拼写错误可能会导致备份文件散落在系统的其他地方。
仅查看目录时间戳会有些令人困惑。您的半小时脚本可能正在修改某些内容,从而导致所有其他目录的时间戳也发生更改。据我所知,rsnapshot 使用以前备份的硬链接。因此修改可能会渗透到其他作业目录。在这种情况下,每小时将从半小时复制,这可以解释您所看到的内容。
其次,您的 cron 版本似乎不支持 */2 语法。因此,您的每小时脚本只在凌晨 2:00 运行一次。它可能也无法处理 MON。因此,请为每个脚本创建一个测试作业,并确保它确实按预期运行。——
Christopher Karel