大家好,在我的 Ubuntu10 服务器 Linux 中的 etc/crontab 中有以下内容:
0 0 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server1/www
0 1 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server2/www
0 2 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server3/www
例如,服务器有 2Tb 的硬盘,而我的备份占用了大约 1Tb。
我每晚都进行备份,现在如果这个备份工作一年或更长时间,我认为我的硬盘空间会减少,因为 rdiff-backup 会记录更改文件的历史记录。
是否可以将限制到我的 crontab 中以限制历史记录并控制硬盘空间?类似于:“在 30 个版本之后取消最旧的版本”。
是否可以将它放入我的 crontab 文件中?
答案1
由于您的 cron 作业每天都会运行,并且您想要保留 30 个版本,这与删除所有超过 30 天的增量备份相同。
使用 rdiff-backup--remove-older-than
指定30D
或选项即可实现1M
。您不能--remove-older-than
在单个命令中结合备份或恢复数据。您需要在 crontab 中添加行。
另一个需要注意的是--remove-older-than
,除非您指定该选项,否则它不会同时删除多个增量。--force
您可以尝试使用手动运行一次--force
,然后让 cron 作业每天删除一个增量。如果 cron 作业因某种原因(例如服务器关闭)未运行,这可能会造成麻烦。我会--force
在 cron 作业中包含该选项。
你的新 crontab 可能看起来像这样:
0 0 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server1/www
0 1 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server2/www
0 2 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server3/www
0 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server1/www
20 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server2/www
40 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server3/www
您应该决定是否在创建新备份之前删除旧的增量或者在什么时候运行哪项作业。
需要明确的是:仅会删除恢复到 30 天前的增量备份状态所需的信息,而不会删除现在仍然存在的旧数据或最新的增量备份中的旧数据。
有关该--remove-older-than
选项的更多信息,您可以阅读手册页:
--remove-older-than time_spec
Remove the incremental backup information in the destination
directory that has been around longer than the given time.
time_spec can be either an absolute time, like "2002-01-04", or
a time interval. The time interval is an integer followed by
the character s, m, h, D, W, M, or Y, indicating seconds, min-
utes, hours, days, weeks, months, or years respectively, or a
number of these concatenated. For example, 32m means 32 min-
utes, and 3W2D10h7s means 3 weeks, 2 days, 10 hours, and 7 sec-
onds. In this context, a month means 30 days, a year is 365
days, and a day is always 86400 seconds.
rdiff-backup cannot remove-older-than and back up or restore in
a single session. In order to both backup a directory and
remove old files in it, you must run rdiff-backup twice.
By default, rdiff-backup will only delete information from one
session at a time. To remove two or more sessions at the same
time, supply the --force option (rdiff-backup will tell you if
--force is required).
Note that snapshots of deleted files are covered by this opera-
tion. Thus if you deleted a file two weeks ago, backed up imme-
diately afterwards, and then ran rdiff-backup with --remove-
older-than 10D today, no trace of that file would remain.
Finally, file selection options such as --include and --exclude
don't affect --remove-older-than.
答案2
你可以尝试
rdiff-backup --remove-older-than 1M /mnt/server1/www
答案3
您需要在 crontab 中添加另一行来告诉 rdiff-backup 删除文件。
从http://www.nongnu.org/rdiff-backup/examples.html:
本节假设过去曾使用 rdiff-backup 备份到 host.net::/remote-dir,但如果省略主机名,所有命令也可以在本地运行。
此命令将删除有关两周内未更新的文件版本的所有信息:
rdiff-backup --remove-older-than 2W host.net::/remote-dir 请注意,一年内未更改的现有文件仍将保留。但运行此命令后,15 天前删除的文件无法恢复。与恢复时一样,有多种方式可以指定时间。下面的 20B 告诉 rdiff-backup 仅保留最近 20 个 rdiff-backup 会话的信息。(nnB 语法仅在 0.13.1 之后的版本中可用。)
rdiff-backup --remove-older-than 20B host.net::/remote-dir