Ubuntu/Linux 中有复制和验证命令吗?

Ubuntu/Linux 中有复制和验证命令吗?

我把所有的数码照片备份到几个地方。我一直在使用 cp 命令,但考虑到它的个人价值,我开始怀疑是否有更可靠的方法。我对 Linux、Bash、Perl 等并不陌生,所以我可以写一些东西来复制和比较 md5 哈希值,但我想知道是否已经存在某种东西(重新发明、轮子等等)。

我搜索 copy 和 (verify|valid|check|hash|confirm) 时,大多数结果都是 rsync。但是,据我所知,rsync 仅使用哈希来查看文件是否需要更新。它不会在之后执行哈希比较。

具体来说,对于此用途,文件是二进制文件,通常为 8-10MB。任何有关实用程序的建议或 DIY 解决方案的指导都将不胜感激。

答案1

来自man rsync,在-c选项下:

-c, --checksum:根据校验和跳过,而不是 mod-time 和 size。

请注意,rsync 始终通过检查文件传输时生成的整个文件校验和来验证每个传输的文件是否在接收端正确重建,但传输后的自动验证与此选项在传输前的“此文件是否需要更新?”检查无关。

答案2

几年前,我和你有同样的要求。我选择的解决方案是通过存储服务器上的 ZFS-FUSE 驱动程序使用 ZFS。我的想法是,我的个人照片、扫描文档和其他类似文件是我可能偶尔访问的东西,所以可能要过很长时间,比如一年或更长时间,我才会注意到文件因驱动器错误或类似原因而损坏。

到那时,我拥有的所有备份副本可能都是这个文件的位腐烂版本。

ZFS 比 RAID-5 有一个优势,那就是它可以检测并修复存储在各个磁盘上的数据中的错误,即使驱动器在读取数据时没有报告读取错误。它将通过校验和检测出其中一个磁盘返回了损坏的信息,并使用冗余数据来修复该磁盘。

由于 ZFS 中校验和的设计方式,我觉得我可以依靠它来长期存储不常用的数据。每周我都会运行“zpool scrub”,它会检查并重新读取所有数据并验证校验和。

在过去的几年里,ZFS-FUSE 的表现相当出色。

很久以前,我为一个客户实施了一个数据库系统,该系统存储了特定目录下所有文件的校验和信息。然后我又编写了另一个脚本,它会定期运行并根据数据库中存储的校验和检查文件。通过这个脚本,我们可以快速检测到损坏的文件并从备份中恢复。我们基本上实施了 ZFS 内部执行的相同类型的检查。

答案3

cp如果您在本地复制文件(如您引用而不是等所暗示的那样scp),那么仅是cmp源文件和目标文件......但实际上,如果cp没有发出某种错误(无论是在命令行还是在执行返回值中),没有任何理由相信它不起作用。

如果你确实想要合法的冗余备份,可以考虑使用远程解决方案保管箱

答案4

https://sourceforge.net/projects/crcsum/ 它通过校验和验证扩展了 Linux cp 和 mv

相关内容