1

我有两台服务器,我想将备份 tar.bz 文件(50G)从一台移动到另一台。

我使用 AXEL 从源服务器下载文件。但是现在当我想提取它时,它给了我错误unexpected EOF。它们的大小相同,内容似乎有问题。

我想知道是否有一个程序/应用程序/脚本可以比较这两个文件并仅纠正损坏的部分?!还是我需要手动拆分并比较每个部分的哈希码?

问题在于源服务器的带宽有限且传输速度低,因此我无法从零再次传输它。

4

3 回答 3

2

您可以使用校验和实用程序(例如 md5 或 sha)来查看两端的文件是否相同。例如

$ md5 somefile 
MD5 (somefile) = d41d8cd98f00b204e9800998ecf8427e

通过在两端运行这样的命令并比较结果,您可以确定文件是否相同。

至于只下载文件的错误部分,这将需要双方对数据的“片段”进行校验和,例如使用bittorrent 协议

于 2013-03-11T19:08:01.707 回答
2

好的,我发现“rdiff”是解决这个问题的最佳方法。只是在做:

在目标服务器上:

rdiff signature destFile.tar.bz destFile.sig

然后将 destFile.sig 传输到源服务器并再次在源服务器上执行 rdiff:

rdiff delta destFile.sig srcFile.tar.bz delta.rdiff

然后将 delta.rdiff 传输到目标服务器并在目标服务器上再次执行 rdiff:

rdiff patch destFile.tar.bz delta.rdiff fixedFile.tar.bz
于 2013-03-11T20:02:27.000 回答
1

这个过程真的不需要单独的程序。您可以通过使用几个简单的命令来简单地做到这一点。如果任何 md5sum 不相加,则复制不匹配的并将它们重新连接在一起。为了使比较 md5sum 更容易,只需在两个文件的输出之间运行一个差异(或对输出进行 md5sum 以查看是否存在差异,而无需复制输出)。

split -b 1000000000 -d bigfile bigfile.
for i in bigfile.*
do
   md5sum $i
done
于 2013-03-11T19:17:16.350 回答