Linuxで重複ファイルを見つけて削除するための2つの便利なツール


インターネットからあらゆる種類のものをダウンロードする習慣がある場合は、ホームディレクトリやシステムを整理するのが特に難しい場合があります。

多くの場合、同じmp3、pdf、epub(およびその他すべての種類のファイル拡張子)をダウンロードし、それを別のディレクトリにコピーしていることがあります。これはあなたのディレクトリがあらゆる種類の役に立たない重複したもので雑然とすることを引き起こすかもしれません。

このチュートリアルでは、Linuxで rdfind fdupes コマンドラインツールを使用して重複ファイルを見つけて削除する方法を学びます。

注意すること - これは不必要なデータの損失につながる可能性があるのであなたがあなたのシステム上で何を削除するのか常に注意してください。新しいツールを使用している場合は、まずファイルを削除しても問題ないようなテストディレクトリで試してください。

Rdfind - Linuxで重複ファイルを見つける

Rdfind は冗長なデータ検索から来ています。これは、複数のディレクトリにまたがる、または複数のディレクトリ内にある重複ファイルを見つけるために使用される無料のツールです。これはチェックサムを使用し、ファイルに基づいて重複を見つけるには名前だけではありません。

Rdfind はアルゴリズムを使用してファイルを分類し、どの重複が元のファイルであるかを検出し、残りを重複と見なします。ランク付けの規則は以下のとおりです。

  • If A was found while scanning an input argument earlier than B, A is higher ranked.
  • If A was found at a depth lower than B, A is higher ranked.
  • If A was found earlier than B, A is higher ranked.

最後の規則は、特に2つのファイルが同じディレクトリにある場合に使用されます。

Linuxに rdfind をインストールするには、Linuxディストリビューションに従って次のコマンドを使用します。

$ sudo apt-get install rdfind     [On Debian/Ubuntu]
$ sudo yum install epel-release && $ sudo yum install rdfind    [On CentOS/RHEL]
$ sudo dnf install rdfind         [On Fedora 22+]

ディレクトリで rdfind を実行するには、 rdfind とターゲットディレクトリを入力します。これが一例です。

$ rdfind /home/user

ご覧のとおり、 rdfind は、プログラムを実行した場所と同じディレクトリにある results.txt というファイルに結果を保存します。ファイルには、rdfindが検出したすべての重複ファイルが含まれています。必要に応じて、ファイルを確認して重複したファイルを手動で削除できます。

もう1つできることは、何もしなくても重複の一覧を表示する -dryrun オプションを使用することです。

$ rdfind -dryrun true /home/user

重複が見つかったら、それらをハードリンクに置き換えることを選択できます。

$ rdfind -makehardlinks true /home/user

そしてあなたがあなたが実行することができる重複を削除したい場合。

$ rdfind -deleteduplicates true /home/user

ある[ rdfind の他の便利なオプションを確認するには rdfind マニュアルを使用できます。

$ man rdfind 

Fdupes - Linuxで重複ファイルをスキャンする

Fdupesはあなたがあなたのシステム上の重複ファイルを識別することを可能にするもう一つのプログラムです。それはフリーでオープンソースで、Cで書かれています。それは重複ファイルを決定するために以下の方法を使用します。

  • Comparing partial md5sum signatures
  • Comparing full md5sum signatures
  • Byte-by-byte comparison verification

rdfind と同じように、同様のオプションがあります。

  • Search recursively
  • Exclude empty files
  • Shows size of duplicate files
  • Delete duplicates immediately
  • Exclude files with different owner

Fdupes の構文は rdfind と似ています。スキャンしたいディレクトリを続けてコマンドを入力するだけです。

$ fdupes <dir>

ファイルを再帰的に検索するには、このように -r オプションを指定する必要があります。

$ fdupes -r <dir>

複数のディレクトリを指定して、再帰的に検索するディレクトリを指定することもできます。

$ fdupes <dir1> -r <dir2>

fdupeに複製ファイルのサイズを計算させるには、 -S オプションを使います。

$ fdupes -S <dir>

見つかったファイルに関する要約情報を集めるには、 -m オプションを使います。

$ fdupes -m <dir>

最後に、すべての重複を削除したい場合は、このように -d オプションを使用してください。

$ fdupes -d <dir>

Fdupes は、見つかったファイルのうちどれを削除するかを尋ねます。ファイル番号を入力する必要があります。

絶対にお勧めできない解決策は、最初のファイルだけを保存するという結果になる -N オプションを使うことです。

$ fdupes -dN <dir>

fdupes で使用可能なオプションのリストを取得するには、を実行してヘルプページを確認してください。

$ fdupes -help

Rdfind fdupes はどちらもLinuxシステム上の重複ファイルを見つけるのにとても便利なツールですが、そのようなファイルを削除するときは十分に注意する必要があります。

ファイルが必要かどうかわからない場合は、そのファイルのバックアップを作成し、それを削除する前にそのディレクトリを覚えておくことをお勧めします。ご質問やご意見がございましたら、下記のコメント欄にご記入ください。