![我应该如何组织我的备份?](https://linux22.com/image/534864/%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E7%BB%84%E7%BB%87%E6%88%91%E7%9A%84%E5%A4%87%E4%BB%BD%EF%BC%9F.png)
我第一次使用 rsync 创建我的网站的每日备份,我想知道我是否应该覆盖以前的副本,或者我是否应该创建多个副本并仅覆盖最旧的副本?(但我可能没有足够的空间)。
我其实也有这个问题。假设大多数文件被意外删除。rsync 是否会从备份空间中删除所有这些文件,因为它们不再存在?在这种情况下它究竟是如何工作的?
谢谢
答案1
您绝对需要制定备份策略,其中包括保留一些旧备份。如果您只保留实时系统的一个镜像,那么一旦实时系统上的文件损坏,您的备份过程就会忠实地镜像损坏的文件,您的备份将变得毫无用处。
一个好的策略是保留一些带有时间戳(或至少带有日期戳)的备份,这样如果您发现最新备份中的文件是损坏文件的副本,您可以参考已知良好的旧版本。
rsnapshot
Alastair 提到的是一款基于 rsync 的非常好的工具,它可以根据可配置的时间表创建和保存可配置数量的源版本镜像(或“快照”)。您可以指定要rsnapshot
保留多少个每小时、每天、每周和/或每月快照,当达到您选择的最大保留快照数时,它将自动删除最旧的快照。正如所提到的,它rsnapshot
非常节省磁盘空间,因为它使用硬链接来表示快照之间不会更改的文件。
答案2
如果您使用的是支持硬链接的系统(例如 Linux、Unix、OSX 等),那么 rsnapshot 之类的程序可能是一个不错的解决方案。它可以自动执行每日、每周等快照和轮换。由于使用了文件系统硬链接,因此磁盘空间使用量随时间推移降至最低。
答案3
除非你做了一些相当奇怪的事情,否则你不会以传统意义上的方式进行覆盖。rsync 旨在使远程服务器上的文件系统树与本地文件系统树同步(反之亦然)。运行它的第一天,它会花一段时间复制整个树;第二天,你只会复制已更改的文件。
如果您想要历史信息,但空间不足,那么与其保留树的多个副本,不如运行一个 cron 作业来对远程服务器上的目录进行 tar 处理,尽可能地压缩,并尽可能多地保留这些 tar 文件,这样您可能会觉得更令人满意。
正如 derfk 所指出的,您可以选择 rsync(例如)是否删除远程端在本地消失的文件,以及许多其他行为 - 但您的工作是在同步树之前捕获它,如果有人将您所有的本地文件更改为“I HATE PIE”。
这就是我不认为 rsync 是合适的备份解决方案的原因之一。但是,如果您只有另一台服务器可以进行备份,并且该服务器上没有太多空间,那么 rsync + 激进 tar 可能是您无需使用复杂的 union FS 技巧就能做到的最好方法,而且绝对比没有备份要好。