如何比较两个大文件夹(> 2G,196,000个文件)


1

我必须将带有196K文件的> 2G文件夹从一个外部硬盘转移到另一个外部硬盘。较旧的驱动器有一些问题,因此我在传输时出错。我跳过有问题的文件。传输成功后,是否有一种有效的方法可以找出未传输(或部分传输)的文件。我正在寻找一种方法在Windows或Linux(Centos / Ubuntu)上这样做


1
你不能只是“移动”文件吗?成功的那个将不再在旧驱动器上,因此剩下的文件将只是那些有问题的人。
m4573r

2
不要 移动文件。这会导致对旧驱动器的额外写入,如果存在导致读取错误的硬件故障问题,则会加剧问题。即使问题只是文件系统(软件),写入也可能使文件系统更加不稳定。我强烈建议你不要给旧驱动器写任何东西。希望你可以发表评论,因为m4573r的评论是 不正确 危险
allquixotic

Answers:


1

旧驱动器有一些问题

什么样的问题?你的意思是它给出了随机读错误?

如果旧驱动器无法正常工作,则无法进行操作 可靠 知道数据是否被正确传输,因为您甚至无法确定您是否正在从物理介质中读取正确的数据!

例如:

  • 要计算文件的MD5或SHA1总和,您必须从磁盘读取整个文件。如果磁盘静默(没有抛出错误)读取错误的位怎么办?你得到一个不同的哈希。如果你再次阅读它并且第二次正确读取它,那么你将它复制到另一个驱动器怎么办?然后,您将在新驱动器上获得“正确”数据,并且哈希值与您最初计算的数据不匹配。

  • 要“删除”一个文件(如果你要移动它们),你必须这样做 到旧驱动器上的文件系统的元数据。如果驱动器出现故障,我绝对不会相信它 ;读取很糟糕。只是让驱动器开启可能会导致它在这一点上降级,很难说。

  • 要将哈希值(MD5 / SHA1总和)写入旧磁盘,即可读取 写信给它,这是真的不推荐。

此时,如果您重视旧驱动器上的内容,我强烈建议您拔下旧驱动器并让专业数据恢复专家从中恢复尽可能多的数据。

如果你不那样做,你就是在玩火。在任何时候您都可能丢失所有数据。即使在您尝试复制文件时,您也可能会复制越来越多的损坏数据并使事情变得更糟。我不知道你的磁盘故障有多严重,但某些条件可能会使这个时间非常敏感。同样,如果数据完全有价值或无法替代,请停止正在进行的操作并拔下驱动器插头。

将来,我强烈建议您在包含不可替代数据的任何驱动器上使用以下文件系统之一。这些文件系统是“失败明显的”,因为所有数据都经过校验和,因此如果磁盘错误地读取数据(也就是“静默损坏”),文件系统就会知道它,并且可以报告错误。您很幸运,因为您已经从操作系统收到文件没有正确复制的通知;磁盘可以以磁盘控制器无法检测到的静默,阴险的方式失败,这会导致磁盘损坏 操作系统通常会在没有校验和的文件系统上通知您。

以下现代文件系统支持校验和:

  • Linux上的Btrfs
  • Linux,BSD或Solaris上的ZFS
  • Windows Server 2012或Windows 8.1上的ReFS(尽管无法从ReFS启动,因此您需要一个NTFS系统分区)

感谢您提供迅速而翔实的答案。我还有更多的数据要从另一个类似的驱动器复制(希望能正常工作)。是否有一个实用程序将计算2G数据的校验和,并告诉我哪些文件(如果有)未正确传输。这是imp数据,我需要确保归档没有错误。我有类似的工具,但它们不适用于(大约1.5G)文件。我可以拆分和测试,但这需要时间。这对我来说似乎是一个普遍的问题,所以希望有一个流行的工具可以在没有干预的情况下完成这项工作
doon

只需使用 sha1sum 要么 md5sum 工具 find 脚本...你说Linux(CentOS / Ubuntu),所以你需要的工具就在你面前。您只需将它们组合在一起即可形成有用的shell脚本。
allquixotic

0

rsync具有仅复制尚未存在的文件的功能,默认情况下仅更新已更改的文件。 它还可以比较源和目标文件的简单哈希值,以检查它们是否使用-c选项正确复制。

它有很多选项可用于配置复制内容的内容和方式。 http://linux.die.net/man/1/rsync


1
当源磁盘和目标磁盘都可靠地工作时,这将完全正常,但OP表示他正在遇到旧磁盘的磁盘故障。这可能是文件系统或硬件相关,但由于我们不知道,我不建议他尝试这样做。如果我们假设他,那么 有这种性质的问题,你的答案 将会 精细。所以我将它保留原样(不是支持或低调)。
allquixotic

嗯,OP并没有真正说出旧磁盘有什么样的磁盘问题,旧的磁盘是目的地还是数据的来源。我有两个,一个失败的磁盘,我想从中将文件传输到一个新磁盘,以及将数据从一个好磁盘传输到另一个坏磁盘,以便在数据完整性不是很重要的情况下进行传输。
PaellaGrindIron

对。 OP没有说。但他遇到的问题主要在于其中一个磁盘在尝试复制时给了他错误。由于OP没有提供足够的信息,我们必须假设最坏的情况。
allquixotic

因此,在最糟糕的情况下,他希望将旧磁盘中的数据转换为新磁盘,尽可能减少损坏。所以他应该只读它并将数据复制过来。 (编辑3:该死的键盘)他之后可以使用答案1或将所选复制程序的错误传递给日志文件。
PaellaGrindIron

在最坏的情况下,由于继续使用,磁盘实际上可能完全失败。因此,尝试重复读取和复制文件并将它们与哈希等进行比较,只会为死亡磁盘创建更多活动,从而加速其死亡并降低他根本无法恢复数据的机会。那是最糟糕的情况。这就是为什么我在我的回答中建议他立即拔掉他的磁盘并转到数据恢复专家。
allquixotic
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.