web-dev-qa-db-ja.com

40TBのデータを重複排除する方法は?

3つのファイルシステムで最大40TBのデータを含むリサーチクラスターを継承しました。データはほぼ15年前までさかのぼります。研究者がさまざまな理由でお互いのデータをコピーしてから、そのコピーに固執するため、かなりの量の重複が発生する可能性があります。

Fdupesやrmlintなどの重複排除ツールについて知っています。このような大規模なデータセットで機能するものを見つけようとしています。すべてのデータをクロールするのに数週間(あるいは数ヶ月)かかるかどうかは気にしません-とにかくファイルシステムを簡単にするためにそれを抑制します。しかし、RAMを使用すると非常に効率的であるか、必要なすべての中間データをRAMではなくファイルに保存できるツールを見つける必要があります。このすべてのデータを1つのセットとしてクロールすると、RAM(64GB)が使い果たされると思います。

現在、900GBのツリーでfdupesを実験しています。途中で25%になり、RAMの使用量はずっとゆっくりと増えていき、現在は700MBになっています。

または、ディスクマップRAMを使用するようにプロセスに指示する方法はありますか?それで、より多くの利用可能性があり、システムRAMを使用しませんか?

CentOS6を実行しています。

17

または、ディスクマップRAMを使用するようにプロセスに指示する方法はありますか?それで、より多くの利用可能性があり、システムRAMを使用しませんか?

はい、それはスワップドライブと呼ばれます。あなたはおそらくすでにそれを持っています。 RAMが不足することを心配している場合は、これを増やすことから始めるのがよいでしょう。ただし、自動的に機能するため、特別なことをする必要はありません。

私はfdupesについて心配しません。それを試してみてください、それは問題なく動作するはずです。

4
krowe

ハッシュキーに基づいて重複を見つけることはうまく機能し、非常に高速です。

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
1
kumar

(hash、mtime)=> filepathを辞書にプッシュするか、エントリがすでに存在する場合はファイルに削除のマークを付けることで、ツリーをウォークするクイックアプリを作成します。ハッシュは、最初のNバイトで計算されたMD5になります。小さなNをハッシュしてから、大きなNをハッシュして、いくつかの異なるパスを実行する場合があります。

これは、おそらく20行または30行未満のPython(os.walk()を使用)で実行できます。

0
Dustin Oprea