非常に大きなファイル(200GB)があります。どうやらコピーをしてみるとちゃんとコピーになりませんでしたね。両方のsha1ハッシュ値が異なります。ファイルをチャンク(1MBや64MBなど)に分割し、各チャンクのハッシュ値を出力する方法はありますか?それでは比較/修正?
これを行うには、クイックアプリを作成することもできます。
ベストアンサー1
この「クイックアプリ」はすでに存在し、比較的一般的です: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
- ファイルサイズ/ランタイムではなくチェックサムに基づいてスキップします。デフォルトでは、rsyncはサイズとランタイムに一致する転送を最適化してスキップします。-c
強制的にチェックサムを計算します(I / Oの面で高価な作業)。これはブロックベースのチェックサムであり(ファイル全体を実行するように指示しない限り)、破損したブロックのみを送信します。ブロックサイズは自動的に選択されますが、オーバーライドすることができます-B
(そうする理由があるかどうか疑問です)。-v
- Verboseはいくつかの詳細(処理中のファイル)を提供します。-P
- 2つの部分ファイル(中間ジョブが完了してもジョブを放棄しないように)と進行状況バーを開きます。--inplace
- 一時ファイルではなく既存のファイルを更新します。これにより、元のファイルが置き換えられます。 200GBの一時ファイルを取得する必要はありません。また、部分ファイルを意味するので、-P
部分的に重複します。
注:生の転送をどのように実行しているのかわかりませんが、sftp / scpなら何かが間違っています。ネットワークの損傷を完全に防ぎます。本当にその理由を見つけなければなりません。 RAM障害は比較的一般的です。