2 台の Linux マシン間で重複するデータ ファイルを見つける最善の方法は何ですか?

2 台の Linux マシン間で重複するデータ ファイルを見つける最善の方法は何ですか?

自宅には 2 つの Debian ボックスがあり、そこにはさまざまな写真、オーディオ、ビデオ、その他のデータ ファイルがあります。どちらも整理されていないので、整理して重複ファイルを削除したいと考えています。どちらにも論理的なフォルダー構造はあまりありません。

これを行う簡単な方法はありますか?

答え1

さまざまなバリエーションがあります。md5 は正しい方向に向かっていると思いますが、SHA サムを使用する方がわずかに優れている可能性があります。SHA1 はおそらく同様の速度で、衝突が発生する可能性は低くなります (ただし、衝突の可能性はいずれにしてもごくわずかです)。

私は次のようなことをするでしょう -

  1. 各ボックスで、次のようなコマンドを使用して、sha1サムを含むファイルのリストを作成します。

/path/to/files -type f -exec sha1sum {} + > pcX-sha1.lst を検索します。

  1. 次に、両方のファイルを1つのボックスにコピーします。これを実行したら、重複しているファイルのみを示すshaチェックサムのリストを見つけます。ファイルが同じディレクトリにあると、次のようになります。

cut -f1 -d" " pcX-sha1.lst pcY-sha1.lst | sort | uniq -d > duplicateshas.lst

最後のリストは、次のようなコマンドで重複ファイルを見つけるためのものです。

$(cat duplicateshas.lst) の各項目に対して、$each pcX-sha1.lst を grep します。完了

上記は、pcX-sha1.lst から見つかった名前のファイルをリストします。もちろん、どちらかのファイル (または、両方の場所のファイルの場所を確認したい場合やファイル名が異なる場合は両方のファイル) を使用できます。

関連情報