在 Ubuntu/Linux 中是否有复制和验证命令?

nsh*_*w13 28 linux backup

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

我在谷歌上搜索的大部分副本和(验证|有效|检查|哈希|确认)都会出现 rsync。但是,据我所知,rsync 仅使用哈希来查看文件是否需要更新。之后它不会执行哈希比较。

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

icy*_*com 22

man rsync,在-c选项下:

-c, --checksum:根据校验和跳过,而不是修改时间和大小

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

  • 有些人发现 rsync 手册对默认的复制后检查有误导性:http://unix.stackexchange.com/a/66702/148560 似乎没有这样的检查。他们说,为了验证所有副本,您必须使用 --checksum 选项进行另一个 rsync。 (10认同)
  • 这真的回答了问题吗?`-c` 告诉 rsync 如何“跳过”...它与验证文件无关 (2认同)

Sea*_*der 5

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

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

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

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

在过去的几年里,ZFS-FUSE 对我来说表现得非常好。

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

  • 我认为 OP 的担忧是传输中的数据损坏。您复制一个文件,副本最终与原始文件不同。 (2认同)