在我说从内部硬盘驱动器到外部驱动器的50+ GB(30,000个文件,包括不同格式的文件)之后,是否有办法找出所有内容是否已正确复制?另外,如果我在取消操作之间停了下来,后来又说合并在继续操作时会影响正确性吗?
我可以使用类似的应用程序,back-in-time
但是在复制文件时非常挑剔,下一次我打算使用copy
operation而merge
不是replace
。复制大量文件时建议这样做吗?
在我说从内部硬盘驱动器到外部驱动器的50+ GB(30,000个文件,包括不同格式的文件)之后,是否有办法找出所有内容是否已正确复制?另外,如果我在取消操作之间停了下来,后来又说合并在继续操作时会影响正确性吗?
我可以使用类似的应用程序,back-in-time
但是在复制文件时非常挑剔,下一次我打算使用copy
operation而merge
不是replace
。复制大量文件时建议这样做吗?
Answers:
我正在使用hashdeep来验证备份/还原,并偶尔检查RAID中的文件系统是否损坏。
速度取决于您使用的哈希函数(某些哈希函数比其他哈希函数占用更多的CPU资源)以及磁盘的读取速度。在我的系统hashdeep
上,md5和300 MB / s的读取速度可以处理或验证大约1 TB /小时。
计算校验和并将其存储在文件中的示例:
cd my-data
hashdeep -rlc md5 . > ~/checksums.txt
参数:
r
–递归l
–使用相对路径c
–指定哈希函数.
–从当前目录开始递归>
–将输出重定向到指定文件请参见手册页。
验证校验和并打印差异列表的示例:
$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
Files matched: 40914
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
参数:
a
–审核(与已知校验和的列表比较)v
–详细(要获得不匹配项列表,多个v
s表示更详细)k
–已知哈希文件请注意,截至2016年3月hashdeep
似乎已被放弃。
对于rsync来说,这似乎是完美的任务。Rsync正在比较和复制差异。
rsync
当我看到您的问题时,该实用程序首先出现在我的脑海中。像下面这样做可以快速显示目录中有哪些文件,a
而不是b
:
$ rsync -rcnv a/* b/
-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files
that would be updated
-v will print the output to stdout verbosely
这是一个不错的选择,因为您也可以比较文件的内容以确保它们匹配。 rsync
的增量算法针对此类用例进行了优化。然后,如果你想b
匹配的内容a
,你可以只取出-n
来执行实际的同步选项。
一些相关的问题:
如果GUI应用程序建议使用文件和目录比较工具?不要为您这样做,请尝试diff -rq /path/to/one /path/to/other
静静地遍历两个目录,仅将差异记录到屏幕上。
您所说的情况太复杂了。虽然您可以编写一个脚本来计算要复制的所有文件的MD5,然后再将它们与复制的文件进行比较:
如果您想要简单快速的操作(在非常复杂的情况下将无法使用),则可以使用Meld
sudo apt-get install meld
在“如果一切都已正确复制的情况下”,我使用经过修改的cp(或mv),其中包括校验和(可以选择存储在xattr中,因此对于源而言只需要计算一次) http://sourceforge.net/projects / crcsum /
crccp
!;-)您始终可以在答案的底部保留链接,作为材料的来源...