求一款快速比对校验文件夹的软件

最近升级硬盘把老硬盘里的数据拷贝到新硬盘。拷贝完之后发现新硬盘C7有计数。
怕拷贝过程中出现啥问题,大佬们有没有推荐个什么软件能比对一下两边文件的哈希之类的(或者用什么其他的算法,总之能比对一致性就行)。

能一次性比对一个盘符那种,如果一个文件一个文件比对的话怕是会累死。。。。

另外,因为我是A\B\C盘 汇总拷贝到 D盘,所以这个软件比对的时候最好是有源有目标,按照源的文件列表比对,不会因为目标盘文件更多然后比出一大堆源盘没有的文件来。

1 个赞

一种方法是先找工具计算出 A~D 盘所有文件的哈希值,然后用 Excel 去重,去重的时候不保留唯一项,这样剩下的文件就是不匹配的文件了。

多谢回复,计算哈希值的工具有什么推荐吗?我下载了个hashmyfiles,感觉好像不太会用。hash算法里那种比较快?MD5? SHA1? 还是 CRC32?

能比对一个源盘符的就行。后来B\C盘拷贝的时候我用了fastcopy然后选了verify。所以BC盘的数据应该没问题。第一个盘我分完区直接用分区助手拷贝的,HDtune一报C7我心虚了。。。不该偷懒用分区助手的。

tc的 同步文件夹 可以比较

一个取巧的方法,可以迅速判断拷贝过程中是否出错。
假设想验证a盘,那么就用压缩软件例如WinRAR将a盘打包成一个文件,同样,将d盘上的a盘文件也用同样参数打包成一个文件,然后对比这两个文件的md5。如果一致,说明拷贝成功。反之,则有文件在拷贝过程中出现问题。

如果是后者。也许我可以帮你写个工具,具体分析一下,到底是哪个文件。


http://www.filecxx.com/zh_CN/documentation/how_to_get_file_checksum.html

这种情况果断 bcompare 啊;

可以选择查看两边「不独有」的文件来对比,每次对比一个源盘和目标盘;

文件夹不对应的话也可以平铺来忽略文件结构,虽然这种情况会比较麻烦;

然后这软件的试用非常良心,不打开就不扣试用天数,虽然我已经有买标准版;

rsync -rvn --delete directory1/ directory2 | sed -n '2,/^$/{/^$/!p}'

rsync比较目录有几点要说明:

  1. 一定不能缺少-n选项,它表示dry run,也就是试着进行rsync同步,但不会真的同步。
  2. 第一个目录(directory1/)后一定不能缺少斜线,否则表示将directory1整个目录同步到directory2目录下。
  3. 其它选项,如"-r -v --delete"也都不能缺少,它们的意义想必都知道。
  4. sed的作用是过滤掉和文件不相关的内容。
  5. 以上rsync假定了比较的两个目录中只有普通文件和目录,没有软链接、块设备等特殊文件。如果有,请考虑加上对应的选项或者使用-a替代-r,否则结果中将出现skipping non-regular file的提示。但请注意,如果有软链接,且加了对应选项(-l或-a或其他相关选项),则可能会出现fileA-->fileB的输出。
  6. 效率很高,因为rsync的原因,筛选的可定制性也非常强。

image

dangerace.ysepan.com

工作原理:
1、枚举源盘下的每一个文件并计算md5;
2、以源盘上文件为依据,对照读取目标盘相同路径下的文件,计算MD5;
3、对比两个MD5;

工具使用要求:
仅适用于原盘符上的文件夹、文件“原路径”拷贝到目标盘符的情况。例如源盘“a:\1.txt”,拷贝到目标盘“d:\1.txt”;源盘“a:\1\1.txt",拷贝到目标盘“d:\1\1.txt”。

我就是用这个,经常用来对比/同步移动硬盘,
对比源代码差异非常好用
你甚至能用它来对比图片玩"找不同"的游戏

辛苦大佬现场撸工具,感谢!这个软件如果源盘符有文件ABCD,目标盘符有文件ABCDEF。也就是说目标盘比源盘文件更多的时候会发生什么?
个人感觉逻辑应该是:根据源盘来设定待比对的文件和文件夹目录,比如源盘有ABCD文件和文件夹,程序就去目标盘对应位置找ABCD文件,如果有,就对比hash,如果没有,直接返回对应文件不存在的log。而反过来如果目标盘有更多的跟源盘无关的文件,可以直接无视。

然后,大佬能否调整一下比对根目录的设计,让目录根可以是一个盘符,也可以是一个文件夹,比如源盘为N:\,目标盘为 T:\N
目标盘可以是文件夹的话,文件夹内保持跟源盘一样的结构

如果算法里可以增加一下 xxhash 算法就更厉害了GitHub - Cyan4973/xxHash: Extremely fast non-cryptographic hash algorithm

FastCopy里的fchash就是默认XXH3算法,据说是速度最快的hash算法。可惜fchash不能校验子目录。

正如您在下面那段所期望的,不会有任何提示,如果ABCD都正确复制的话。因为该工具是依据源盘文件去找目标盘同路径文件进行对比,对目标盘其他文件并不过问。

可以做到,我改动一下,稍后放出新版。

您是要完成对比工作?还是要定制一个您理想的工具并融入您所希望的高新技术?前者的话,任何hash校验算法都能满足您的要求,多等几分钟而已;后者的话可以付费定制。

image
根据新需求做了修改。

dangerace.ysepan.com

w

感谢大佬手撸工具!!

不过实际尝试过之后不同的hash算法倒不是几分钟的差距,如果抛开语言执行效率因素的话,大佬的MD5工具算一遍我拷贝的数据是2个半小时,用xxh3算法的fchash跑一遍数据是1个半小时。因为要对比需要算两遍,所以实际上大概会差2个小时左右。

当然有大佬的工具还是方便,用fchash的话还要先跑,然后再把txt的回显格式化成csv,然后再在excel里对比不重复的数据。

在跑的校验的过程中我想到,有没有可能类似fastCopy的类似方法,既然这种整盘校验大多是发生在跨硬盘拷贝数据,可以设置一个选项,打开后可以建立两个工作线程,分别去读取不同的硬盘数据,各自临时建立一个hash表,然后再持续比对这两个表。
这样的话相当于同时把两个硬盘都跑起来,如果两个硬盘类似(比如都是HDD或者都是SDD)时间可以节省一半。

如果您付费定制,我可以专门为您写一个“xxxxhash”算法,快如闪电,效率比xxhazh还高数倍,可以以极短的时间完成全盘校验。
需要的话可以联系我。

我测试了一下,1.17G数据(87个大小文件),用传统hash算法,需要64秒;用我的新hash算法,大概耗时不足2秒。检测效果完全一致。

hash算法不能只考虑速度,还需要考虑碰撞率。

谢谢提醒,作为民用,家用,根据我的算法,碰撞率可以忽略不计。

如果是军用、商用,我这个算法确实就不能用了。

当前我的新hash算法也是比较初级的版本,今后还会不断完善,碰撞率会在当前民用家用几乎没有任何影响的前提下,继续显著下降。