何千ものファイルをコピーしたら、データの整合性を確認してください。

何千ものファイルをコピーしたら、データの整合性を確認してください。

何千ものファイルをexFAT MicroSDカードにコピーしました。

ファイル数とバイト数は同じですが、データが破損しているかどうかはどうすればわかりますか?

JackPal Android端末もこのコマンドをサポートすれば良いようです。

答え1

MD5を使用するのは良いアプローチですが、それを使用する標準的な方法は次のとおりです。

  1. cdソースファイルのディレクトリに移動し、次を実行します。

    md5sum * >/path/to/the/checksumfile.md5
    

ディレクトリレベルが複数ある場合にshopt -s globstar置き換えて使用できます。***/*

MD5ファイルのファイル仕様は、コマンドラインで指定された仕様とまったく同じです(パターンがで始まらない限り、相対パス/)。

  1. cdファイルがコピーされたディレクトリに移動し、次のコマンドを実行します。

    md5sum -c /path/to/the/checksumfile.md5
    

を使用して-cmd5sum提供されたMD5ファイルのファイル仕様を読み取り、これらのファイルのMD5を計算し、それをMD5ファイルの値と比較します(これがファイル仕様が一般的に比較的最もよく維持される理由なので、MD5ファイルを再利用できます。あります)他のディレクトリのファイルにあります)。

この方法でMD5合計を使用すると、MD5の違いと欠落しているファイルをすぐに知ることができます。

答え2

デバイスを取り外し、取り出し、再インストールします。その後、使用

diff -r source destination

rsync以前にコピーをたくさん行ったことがある場合はrsync -n -c非常に便利ですdiff。ただし、ビットごとの比較は実行されず、MD5チェックサムを使用します。


追加の詳細を含む同様の答えがあります。あるハードドライブから別のハードドライブにコピーした後に大きなディレクトリを確認する

答え3

rsync -rc original-dir/ copied-dir/

-crsyncはMD5チェックサムでファイルを比較します(この機能がないと、通常はより速い比較のためにタイムスタンプとサイズのみを使用します)。

これにより、rsyncはターゲットとは異なる、または欠落しているように見えるすべてのアイテムをコピーします。これを防ぐために、-nおよびを使用することもできます-i。前者はrsyncに変更を加えずに比較のみを行い、後者は違いを示すようにします。

たとえば、次のようなディレクトリがあります。

$ find dir1/ dir2/
dir1/ dir2/
dir1/
dir1/d
dir1/d/a
dir1/d/b
dir1/c
dir2/
dir2/d
dir2/d/a
dir2/d/b

これ:

$ rsync -rcni dir1/ dir2/
>f+++++++++ c
>fc.T...... d/b

これらすべてのsを見ると、+ファイルcはに存在しませんが、dir2ファイルはd/b存在しますが異なることがわかります(c最初の列に で示されています)。更新する時間と言いますT(まだ使用していない場合-n)。

-i出力形式は rsync マンページで説明されています。と入力してEnterを押すと、man rsyncこの出力を解釈するセクションを入力できます。/--itemize-changes$

答え4

個々のファイルのハッシュ値を生成してテキストファイルに出力し、テキストファイルのMD5ハッシュを生成できます。このテキストファイルには、必要なハッシュ関数を使用できます。このハッシュリストは、より難しいハッシュ関数を使用するのに役立つほど大きくsha512sumないためです。 )と最高速度はそのような暗号化、セキュリティアルゴリズムではありませんが。
cksumsumcrc32sha512sum任意のハッシュ関数オフライン環境でデータの整合性を検証するのに十分です。ただし、すべてのファイルハッシュの長さを同じにするには(32など)、一般的にサポートされているmd5sum最速のハッシュを使用してください。安全ハッシュアルゴリズム(古いですが、どのアルゴリズムよりもはるかに高速です)邪悪なアルゴリズムを実行し、それを実行します)。

ソースとターゲットで次のコマンドを実行します。

cksum /path/to/folder/* | tee -a hash.files.txt |cut -f 1 -d " " >>hash.list.txt #extracts pure hashsum string only for the output, to hide the different file path.
md5sum hash.list.txt

...または単一のコマンドを使用してください。

cksum /path/to/folder/* | tee -a hash.files.txt | cut -f 1 -d " " | tee -a hash.list.txt | sort | md5sum

ハッシュファイルとリストファイルの名前(ハッシュテーブル.txtそしてハッシュファイル.txt私の例では)何でも指定できます。破損したファイルを識別するために2つのファイルが作成されます(最初のファイルにはファイル名も含まれ、2番目のファイルは比較に使用されます)。

sortアルファベット順の並べ替えの実装shとは若干異なるためです。それを補償してください。bashsort

関連情報