コピーしたファイルの正当性を確認します


14

たとえば、50 + GB(さまざまな形式を含む30,000ファイル)のファイルを内部ハードドライブから外部ドライブにコピーした後、すべてが正しくコピーされたかどうかを確認する方法はありますか?また、操作をキャンセルして途中で停止し、後で操作を続行するときにマージすると言った場合、正確性はヒットしますか?

のようなアプリケーションを使用することもできますback-in-timeが、ファイルをコピーすることは非常に厳しく、次回はcopy操作を使用してのmerge代わりに言うつもりですreplace。大量のファイルをコピーするときにお勧めですか?


2
ここで答えを見つけることができます
-Takkat

回答:


16

私はhashdeepを使用してバックアップ/復元を確認し、時々RAIDのファイルシステムの破損を確認しています。

速度は、使用するハッシュ関数(他の関数よりもCPUを集中的に使用する関数)とディスクの読み取り速度に依存します。私のシステムでhashdeepは、md5および300 MB / sの読み取り速度で、1 TB /時間前後で処理または検証できます。


チェックサムを計算してファイルに保存する例:

cd my-data
hashdeep -rlc md5 . > ~/checksums.txt

パラメーター:

  • r –再帰的
  • l –相対パスを使用する
  • c –ハッシュ関数を指定する
  • . –現在のディレクトリから再帰的に開始
  • > –指定されたファイルに出力をリダイレクトする

マニュアルページを参照してください


チェックサムの検証と相違点のリストの印刷の例:

$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
          Files matched: 40914
Files partially matched: 0
            Files moved: 0
        New files found: 0
  Known files not found: 0

パラメーター:

  • a –監査(既知のチェックサムのリストと比較)
  • v–詳細(不一致のリストを取得するには、複数vのsはより詳細なことを意味します)
  • k –既知のハッシュのファイル

2016年3月の時点hashdeep放棄されているように見えることに注意してください。


13

rsyncに最適なタスクのように見えます。Rsyncは差分を比較およびコピーしています。

rsyncあなたの質問を見たとき、このユーティリティが最初に思い浮かびました。以下のような操作を行うと、ディレクトリにはあるがディレクトリにaはないファイルをすばやく表示できますb

$ rsync -rcnv a/* b/

-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files 
   that would be updated
-v will print the output to stdout verbosely

ファイルの内容も比較して、それらが一致することを確認できるため、これは適切なオプションです。 rsyncのデルタアルゴリズムは、このタイプのユースケース向けに最適化されています。次にb、の内容を一致させたい場合は、実際の同期を実行するオプションをa削除するだけ-nです。

関連する質問:


1
rsyncは間違いなくこの仕事のツールですが、それ自体はdiffを比較したりコピーしたりしません。サイズとハッシュを使用してファイルを比較します。
ジャスティンフォース

@JustinForceサイズを使用していますか?確かに、サイズが異なるとファイルがまったく同じではないことを確認できますが、rsyncは非常に用途が広く、オプションでメタデータ(時間など)を信頼して、すべてのファイルの再読み取りを回避できます。ネットワーク経由でコピーする場合、ローリングハッシュを計算して共通部分を細かく検出して転送を回避しますが、デフォルトではローカルドライブではハッシュはこの役割を果たしません(使用されている場合)。短い宛先には既に正しいコンテンツがあり、追加するだけでよいことを信頼するように依頼することもできますが、トピックについては続けましょう。
ステファンゴーリチョン


3

あなたが言っている状況は複雑すぎます。ただし、コピーするすべてのファイルのMD5を計算し、後でコピーされたファイルと比較するスクリプトを作成できます。

シンプルで高速なものが必要な場合(非常に複雑なシナリオでは機能しません)、Meldを使用できます

sudo apt-get install meld

0

「すべてが正しくコピーされた場合」で、チェックサムを含む変更されたcp(またはmv)を使用します(オプションでxattrに格納されているため、ソースに対して1回だけ計算する必要があります) http://sourceforge.net/projects / crcsum /


1
あなたの答えは100%正しいですが、初心者ユーザーが実装することはほぼ不可能です。したがって、回答を編集し、ダウンロード、コンパイル、インストール、アンインストールの手順を回答に含めてcrccpください。;-)回答の下部にあるリンクをいつでも資料のソースとして残すことができます
...-Fabby
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.