何千ものファイルをexFAT MicroSDカードにコピーしました。
ファイル数とバイト数は同じですが、データが破損しているかどうかはどうすればわかりますか?
JackPal Android端末もこのコマンドをサポートすれば良いようです。
答え1
MD5を使用するのは良いアプローチですが、それを使用する標準的な方法は次のとおりです。
cd
ソースファイルのディレクトリに移動し、次を実行します。md5sum * >/path/to/the/checksumfile.md5
ディレクトリレベルが複数ある場合にshopt -s globstar
置き換えて使用できます。*
**/*
MD5ファイルのファイル仕様は、コマンドラインで指定された仕様とまったく同じです(パターンがで始まらない限り、相対パス/
)。
cd
ファイルがコピーされたディレクトリに移動し、次のコマンドを実行します。md5sum -c /path/to/the/checksumfile.md5
を使用して-c
、md5sum
提供されたMD5ファイルのファイル仕様を読み取り、これらのファイルのMD5を計算し、それをMD5ファイルの値と比較します(これがファイル仕様が一般的に比較的最もよく維持される理由なので、MD5ファイルを再利用できます。あります)他のディレクトリのファイルにあります)。
この方法でMD5合計を使用すると、MD5の違いと欠落しているファイルをすぐに知ることができます。
答え2
デバイスを取り外し、取り出し、再インストールします。その後、使用
diff -r source destination
rsync
以前にコピーをたくさん行ったことがある場合はrsync -n -c
非常に便利ですdiff
。ただし、ビットごとの比較は実行されず、MD5チェックサムを使用します。
追加の詳細を含む同様の答えがあります。あるハードドライブから別のハードドライブにコピーした後に大きなディレクトリを確認する
答え3
rsync -rc original-dir/ copied-dir/
-c
rsyncは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
ないためです。 )と最高速度はそのような暗号化、セキュリティアルゴリズムではありませんが。cksum
sum
crc32
sha512sum
任意のハッシュ関数オフライン環境でデータの整合性を検証するのに十分です。ただし、すべてのファイルハッシュの長さを同じにするには(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
とは若干異なるためです。それを補償してください。bash
sort