优化空间 rdiff-backup

优化空间 rdiff-backup

大家好,在我的 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

相关内容