我使用rsync
基于 的备份方案来维护文件服务器的每日(很快每周和每月)“快照”,使用 的rsync
link-dest 功能来存储未更改文件的快照之间的硬链接。这非常有效:备份超过 330 GB 的数据,如果没有文件发生更改,整个快照仅占用磁盘上的 1.5 MB。
最近,这台服务器的硬盘故障让我震惊地意识到我现在是多么脆弱——虽然由于这些备份快照,我没有丢失任何数据,但备份和它们备份的数据都位于服务器的同一个物理盒子中。我公寓的办公室;像我公寓大楼里的一场小火灾这样简单的事情就可能完全消除我数据的最后一点(双关语)!
我有一个可以将外部硬盘驱动器带到的异地位置,因此我打算实施轮流异地备份,其中一个硬盘驱动器处于离线和异地状态,而第二个硬盘则插入并备份我的硬盘快照,并且我会定期(例如每周一次)交换它们,这样,如果最坏的情况确实发生,我最多会丢失最后几周的数据。
现在的问题是:我想在外部硬盘驱动器上备份快照,而不是数据本身。 (我有一天没有注意到硬盘出现故障,所以当天的每日快照几乎毫无价值;然而,拥有额外的快照拯救了我的培根,我也希望在这里得到同样水平的保证。自我注意: 实际上监视器方便的 SMART 数据...)经过验证的方法行不通,cp
因为它会看到单个文件,而不是硬链接,所需的存储空间增加了 7 倍!rsync
可以,但我希望压缩这些外部驱动器上的数据,这样我就可以使用更小的驱动器(我的目标是 1TB,对于当前 337 GB 的数据来说绰绰有余,但明显小于几乎我的文件服务器容量为 3 TB;我不希望能够将所有 3 TB 备份到 1 TB 驱动器,即使进行压缩,我也只是希望 1 TB 随着数据的增长而具有最大的使用寿命)。
那么,有谁知道有一种方法可以在压缩我正在备份的文件的同时维护快照之间的硬链接关联吗?理想的解决方案还支持排除列表,这样我就可以简单地跳过压缩已经压缩的文件(.zip、.gz、.mp3、.jpg 等)。
为了绝对清楚起见,我正在寻找一种方案,其中 /backup/snapshots/daily.1/file1 中指向 /backup/snapshots/daily.0/file1 的硬链接将被复制到 /mnt/external_hdd /snapshots/daily.1/file1 作为指向 /mnt/external_hdd/snapshots/daily.0/file1 的硬链接,后者(实际文件本身)现在已被压缩(例如 gzip)。
答案1
看rdup-simple
(从rdup)。你说你想要压缩,但如果你改变主意,我强烈推荐快照。
顺便说一句,如果两个硬链接指向一个文件,则它是同一个文件。您不能仅压缩其中一个硬链接,因为它与文件系统中的基础数据相同。