find
両方のディレクトリで重複ファイルを探し、あるディレクトリのファイルを別のディレクトリのファイルへのハードリンクに置き換える簡単な方法(1つのコマンドまたは一連のコマンド、関連する可能性があります)を探しています。
状況は次のとおりです。複数の人がオーディオファイルを保存するファイルサーバーであり、各ユーザーは独自のフォルダを持っています。時には、複数の人が同じオーディオファイルのコピーを持っていることがあります。今、これらは重複しています。ハードドライブのスペースを節約するためにハードリンクを作成したいと思います。
答え1
rdfind
あなたが要求したことを正確に行います(そしてその順序で)ジョニーなぜ?リスト)。重複したリンクを削除し、ソフトリンクまたはハードリンクに置き換えることができます。組み合わせてsymlinks
シンボリックリンクを絶対または相対にすることもできます。チェックサムアルゴリズム(sha256、md5、またはsha1)を選択することもできます。
コンパイルされたので、ほとんどのスクリプトソリューションよりも高速です。time
2009 Mac Miniは、2600ファイルを含む15GiBフォルダに返されます。
9.99s user 3.61s system 66% cpu 20.543 total
(md5を使用)。
ほとんどのパッケージハンドラ(Mac OS X用MacPortsなど)で利用できます。
編集:rdfindは本当に使いやすく、非常に教育的であることを追加できますか?その-dryrun true
フラグを使用すると、非常に直感的で恐ろしくはありません(私の考えでは、ファイルを削除するツールが一般的に使用されるためです)。
答え2
ツールを使用してくださいfdupes
:
fdupes -r /path/to/folder
ディレクトリの重複リストを提供します(-rは再帰的に作成します)。出力は次のとおりです。
ファイル名1
ファイル名2
ファイル名 3
ファイル名 4
ファイル名 5
Filename1とfilename2は、filename3、filename4、filename5と同じです。
答え3
Perlスクリプトは次の場所にあります。http://cpansearch.perl.org/src/ANDK/Perl-Repository-APC-2.002/eg/trimtrees.plこれがまさにあなたが望むものです:
コマンドラインで指定されたすべてのディレクトリに移動し、MD5チェックサムを計算し、同じMD5を持つファイルを見つけます。同じ場合は実際の比較が行われ、実際には同じ場合は、2つのファイルのうち2番目のファイルが最初のファイルへのハードリンクに置き換えられます。