Cron:无法让我的备份计划与 rsnapshot 配合使用

Cron:无法让我的备份计划与 rsnapshot 配合使用

我正在使用 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

相关内容