rsync 如何处理文件损坏?

rsync 如何处理文件损坏?

作为备份程序,我想定期将文件(例如通过rsync)从 Windows 机器同步到外部 HD。

但是,我对文件损坏感到疑惑。如果主机上的文件损坏,其校验和会发生变化,rsync 会将其视为已修改,并从主机复制损坏的文件,覆盖硬盘上的正确副本。

rsync 是否有任何机制可以防止这种情况发生?如果没有,如何避免这种情况?

编辑:为了澄清起见,我需要说明校验和是否因为我向文件添加了新内容而发生变化,还是因为文件损坏了。在这两种情况下,rsync 都会将文件视为“已修改”,并将其写入 HD 上的旧版本。在第一种情况下,rsync 正在执行我想要的操作,在第二种情况下,它正在用垃圾擦除我的旧有效文件。

答案1

处理此问题的通常方法是处理想要回滚到文件先前版本的任何其他情况的方法:增量备份。

这里的想法是,您只在内容发生变化时才实际复制文件。对于备份媒体上的任何其他文件副本,您只需参考以前的修订版本。如果当前修订版本被损坏,这允许您返回到文件的先前修订版本,当然,这个想法是,如果您没有及时注意到损坏,那么该文件可能一开始就不是很重要。

--link-destrsync 通过命令行参数支持此功能(至少在 *nix 上) 。

为了使它正常工作,您还需要一些东西来清理旧副本,而 rsync 则不能;您需要其他东西来清理旧副本。否则您的磁盘最终会填满,您将不得不手动从目标媒体中删除文件。

直接回答这个问题:rsync 无法真正处理损坏的文件。它可能会处理无法读取的文件,除非您在就地替换模式下运行它,但它不会查看该 JPEG 图像或 PDF 文档并确定其格式错误,导致其在呈现时看起来很奇怪。这不是它的工作。

比较一下一个答案为什么 RAID 不是备份?在 Server Fault 上,作者贾里德·奥伯豪斯

备份会拒绝复制损坏的文件吗?

即使备份复制了损坏或错误的数据,备份的意义在于您可以而且应该拥有多个副本。例如,上一小时、昨天、上周等。您可以在存储设备上使用旋转快照来获得类似的效果。

并且相关,用约尔格·W·米塔格另一个答案对于同一个问题,强调了冗余和备份之间的区别:

如果你不小心用垃圾覆盖了你的博士论文,冗余可以确保你有多个垃圾副本,以防其中一个变坏。备份可以确保你可以恢复你的博士论文。

答案2

如果你想检查文件内容,可以使用“--checksum”选项。此选项会为每个传输的文件计算哈希值。

相关内容