在Ubuntu / Linux中是否存在复制并验证命令?


23

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

我大部分用于复制和(verify | valid | check | hash | confirm)的谷歌搜索都出现了rsync。但是,据我所知,rsync仅使用散列来查看文件是否需要更新。之后,它不执行哈希比较。

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


一致如何?它用于双向同步,但是肯定会检查文件的校验和。
逐渐变细

Answers:


19

从中man rsync,在-c选项下:

-c,-checksum:基于校验和而不是mod-time和大小跳过

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


7
有人发现rsync手册误导了默认的后拷贝检查:unix.stackexchange.com/a/66702/148560似乎没有这样的检查。他们说,为了验证所有副本,您必须使用--checksum选项执行另一个rsync。
Rotareti '16

5

几年前,我和您有同样的要求。我选择的解决方案是通过存储服务器上的ZFS-FUSE驱动程序使用ZFS。我的想法是,我的个人照片,扫描的文档和其他类似文件是我偶尔可能会访问的东西,因此可能要花很长时间(例如一年或更长时间),然后我才发现文件由于以下原因而损坏了:驱动器错误等。

到那时,我拥有的所有备份副本可能都是文件的此位旋转版本。

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

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

在过去的几年中,ZFS-FUSE对我来说表现很好。

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


为什么要下票?由于未留下任何评论,因此我认为它是“ -1,不同意”。:-)
肖恩·赖夫施耐德

...但是然后:哪一部分不同意?尽管对于这个问题可能有些偏离主题,但对我来说听起来确凿。因此,我希望投票表决的理由是“不回答问题”,而不是让我们忽略上述内容中的某些实际缺陷……
Arjan 2010年

我今天早上意识到,我以为icyrock在问是因为担心位旋转,这正是我担心的问题。但这也许有所不同。虽然我无法想象用例将是合法地更改文件内容而不更改文件时间。
肖恩·赖夫施耐德

我认为OP担心的是传输过程中的数据损坏。您复制文件,并且副本最终与原始文件不同。
乔恩·本特利

btrfs?有校验和并且是本地的...
Dmitry Kudriavtsev


1

我发现此实用程序(Linux和Windows)可以满足您的要求(使用日志对副本进行哈希+哈希验证):http : //sourceforge.net/projects/quickhash/

唯一的缺点是它仅作为GUI存在(没有命令行访问权限)

从v1.5.0开始,可以对选定的源文件夹进行哈希处理,然后将其复制并重建到目标文件夹中,在此处再次对内容进行哈希处理以进行验证。从1.5.5开始,也可以使用选定的文件掩码(* .doc; *。xls等)。


0

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

如果您确实需要合法的冗余备份,请考虑使用诸如dropbox之类的远程解决方案。


+1。目前尚不清楚为什么这个答案被否决了,因为它提供了(在我看来是)完美解决该问题的方法,尽管它需要两个命令而不是一个。
乔恩·本特利

您确实需要编写一个带循环的脚本来使用此答案,因为它不会考虑多个文件和文件夹。
Gringo Suave
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.