ファイルを重複排除する方法


10

複数のマシンでファイルをバックアップしてアーカイブするだけです。残念ながら、これらのファイルには、同じファイルであるが異なるマシンに異なる方法で格納されているいくつかの大きなファイルがあります。たとえば、アドホックバックアップとして1台のコンピューターから別のコンピューターにコピーされた写真が数百枚ある場合があります。ファイルの共通リポジトリを作成したいので、同じ写真の複数のコピーは必要ありません。

これらのファイルをすべて1つのディレクトリにコピーした場合、重複したファイルを通過して認識し、リストを取得したり、重複したファイルの1つを削除したりできるツールはありますか?


回答:


3

各ファイルのmd5sumを作成し、重複するmd5sumsが重複ファイルを提案します(ただし保証はしません)。


1
彼らは強く「推奨」しますが、:) ..ファイルが同じサイズの場合、提案が正しい可能性は非常に高くなります
warren

2

dupemergeを使用して、同一のファイルをハードリンクに変えることができます。ただし、大きなファイルセットでは非常に長い時間がかかります。ファイルのSHA(またはMD5)ハッシュはほぼ確実に速く動作しますが、重複を見つけるにはより多くのレッグワークを行う必要があります。偶発的な衝突の確率は非常に低いため、実際には無視できます。(実際、多くの重複除外製品がすでにこれを行っています。)

写真や音楽を扱う最善の策は、特にそれらのアイテムの複製を見つけるために調整されたツールを入手することです。特に、タグ付け、トリミング、エンコードの違いなどが発生した後は、バイナリレベルで同一のファイルがない可能性があります。ファイルにわずかな調整を加えた場合でも、同じように「見える」写真と「同じように聞こえる」音楽を見つけることができるツールが必要です。


1
hardlink非常に高速です(120万ファイルの場合は200秒かかりました、
320 GB

1

まあ、あなたが能力を持っているなら、あなたは重複排除ファイルシステムをセットアップして、それにバックアップを置くことができます。これにより、ファイル全体が重複排除されるだけでなく、類似したファイルも重複排除されます。たとえば、複数の場所に同じJPEGがあり、各バージョンに異なるEXIFタグがある場合、重複排除ファイルシステムは画像データを一度だけ保存します。

ファイルシステムの重複排除には、lessfs、ZFS、およびSDFSが含まれます。


1
SDFSまたはlessfsでの重複排除について話すことはできませんが、ZFSでの重複排除はこのように機能しません。ブロックレベルでチェックするため、同じファイルには重複排除のフラグが立てられる可能性がありますが、ヘッダーが異なるファイルはフラグが立てられない可能性があります。さらに、ZFSレコードサイズ(デフォルトは128KB)よりも小さいファイルを1つのブロックにまとめてパックできるため、重複除外のメリットがない場合もあります。
notpeter 2014年

重複排除されたファイルシステム(zfsまたはbtrfs)は、バックアップホストのスペースのみを節約します。転送されたデータの量を節約しません。ファイルのハッシュを計算し、それをバックアップホストに送信することは、いくつかのアイデアです。「I have it」と表示されたら、そのファイルのバックアップが行われます。これは非常に高価な(お金の)バックアップソフトウェアに実装されています。オープンソースで聞いたことがありません。しかし多分それは知っている今実装されている:)
Znik

@Znik rsync --link-destは、読み取り/転送も節約したい場合に便利です。簡単な紹介はこちら:netfuture.ch/2013/08/...
マルセルWaldvogel

ファイルに割り当てられたiノードをテストすることで機能します。ただし、重複排除が非表示の場合(squashfsファイルシステムなど)、rsyncはこれをチェックできず、同じデータを何度も転送します。
Znik

0

私がこの種のことをしているときに、実際に自分の空き時間に2週間以上自分でファイルを確認する方がはるかに魅力的で時間効率が良いことを学びました。物事の違いは、コンピュータよりもはるかに優れています。

同意しない場合は、EasyDuplicateFinderをお勧めします。ただし、前述したように、5 GBのファイルの場合、たとえば1日程度の時間がかかります。

もう1つの注意点として、Crashplanは以前に行っていた処理を実行しますが、バージョン管理に問題がなく、より整理されています。


0

別の可能性は、バックアップしているマシンがそれをサポートすると想定して、のようなものを使用することですrsync

あなたの場合はrsyncAからBへ、そしてCからBへ、そしてDからなどB、に、正確な重複が(すなわち、ファイル名によって)除去されます(そして、あなたがバックアップしているマシン間で同期)。

ただし、すべてを同期させたくない場合は、これが最善の方法ではありません。


0

画像ファイルの場合は、findimagedupesを使用します。また、debianでパッケージ化されています。


findimagedupesは写真やグラフィックス用で、おそらくある形式から別の形式に変換されます。写真(i home)は問題の例にすぎません。他の大きなファイルである可能性があります。
Znik

0

ハードリンクは、ファイル全体が同一である場合にのみ重複排除を実行します。ヘッダー(EXIF、ID3、…)またはメタデータ(所有者)が異なる場合、それらはリンクされません。

ブロック重複排除サポート(ZFS、btrfsなど)を備えたファイルシステムを使用する機会がある場合は、代わりにそれを使用してください。私は、エクステントレベルの重複排除をサポートし、常に大量のメモリを消費しない(ZFSオンライン重複除去)btrfs のオフライン(別名バッチ)重複除去サポートがとても気に入っています。

重複排除には、他のコピーの通知なしにユーザーがファイルを変更できるという利点もあります(これは、お客様のケースでは適用されない場合もありますが、他のケースでは適用されません)。

優れたディスカッションについては、https://btrfs.wiki.kernel.org/index.php/Deduplicationを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.