将文件哈希64MB块?

用户名

我有一个很大的文件(200GB)。显然,当我通过它进行传输时,无法正确复制。两者上的sha1哈希不同。有没有一种方法可以将文件划分为多个块(例如1MB或64MB)并为每个块输出哈希值?然后比较/修复?

我可能只是写一个快速的应用程序来做到这一点。

征服了

该“快速应用程序”已经存在,并且相对常见:rsync。当然,rsync可以做的还远远不止这些,但是您想要的很简单:

rsync -cvP --inplace user@source:src-path-to-file dest-path-to-file   # from the destination
rsync -cvP --inplace src-path-to-file user@dest:dest-path-to-file     # from the source

默认情况下,它将使用ssh(或者在真正的旧版本上可能使用rsh)建立连接并传输数据。其他方法也是可能的。

我通过的选项是:

  • -c—根据校验和而不是文件大小/ mtime跳过。默认情况下,rsync在大小和mtime匹配的情况下优化并跳过传输。-c强制其计算校验和(就I / O而言,这是一项昂贵的操作)。请注意,这是基于块的校验和(除非您告诉它仅处理整个文件),并且它仅传输损坏的块。块大小是自动选择的,但是可以被覆盖-B(我怀疑有任何理由)。
  • -v —详细,将提供一些详细信息(正在处理的文件)
  • -P —同时打开部分文件(因此,如果文件中途通过,则不会丢掉工作)和进度条。
  • --inplace—更新现有文件,而不是临时文件(该文件将替换原始文件)。使您免于拥有200GB的临时文件。还意味着部分文件,因此-P部分冗余。

顺便说一句:我不确定您是如何进行原始传输的,但是如果是sftp / scp,则出了点问题–可以完全保护网络免受任何损坏。您确实应该找出原因。有缺陷的RAM是一种相对常见的RAM。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章