1

2 つのサーバーがあり、バックアップ tar.bz ファイル (50G) をあるサーバーから別のサーバーに移動したいと考えています。

AXEL を使用して、ソース サーバーからファイルをダウンロードしました。しかし、今それを抽出したいとき、それは私にエラーを与えますunexpected EOF。サイズは同じで、内容に問題があるようです。

この 2 つのファイルを比較して、破損した部分だけを修正できるプログラム/アプリ/スクリプトがあるかどうかを知りたい! または、手動で分割して、各部分のハッシュ コードを比較する必要がありますか?

問題は、ソースサーバーの帯域幅が制限されており、転送速度が遅いため、ゼロから再度転送できないことです。

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

このプロセスには、別のプログラムは必要ありません。いくつかの簡単なコマンドを使用して簡単に実行できます。md5sums のいずれかが合計されない場合は、一致しないものをコピーして連結し直します。md5sum を簡単に比較するには、2 つのファイルの出力間で diff を実行します (または出力の md5sum を実行して、出力をコピーせずに違いがあるかどうかを確認します)。

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