Linuxで特定のフォルダ配下で中身が重複したファイルを確認・削除する
複数人でファイルサーバなどを利用していると、時折同じファイルなのだけど名前変えて違うフォルダにファイルをコピーしたり、ISOファイルなどを気づかずに同じファイルを別名でおいてしまったりといった、中身が同じファイルを複数置いてしまうことがある。
ディスクサイズは有限なので、容量がいっぱいになってきたら当然重複したファイルや容量の大きいファイルは削除する必要がある。
そんな時、重複して中身がおなじファイルを見つけるときに便利なのがfdupesコマンドだ。
1.インストール
fdupesコマンドのインストール方法は以下。
1 2 | yum install -y --enablerepo=epel fdupes apt install fdupes |
これでfdupesコマンドがインストールできる。
2.使い方
fdupesは、以下のように対象のPATHを指定してやることでそのPATH配下で重複したファイルをリストアップしてくれる。
このとき、「-r」オプションを付与しないと再帰的に検索してくれないので注意。
1 | fdupes -r 対象PATH |
コマンドを実行すると、以下のようにプログレスを表示させて検索してくれる。
ファイル数が多いとその分時間がかかるので注意。
[root@BS-PUB-CENT7-01 ~]# fdupes -r /tmp/ Progress [1/15] 6% -
実行後、重複ファイルが見つかったら以下のように改行区切りで重複ファイルを表示してくれる。
[root@BS-PUB-CENT7-01 ~]# fdupes -r /tmp/ /tmp/aaa/clonezilla-live-1.2.12-67-i686-pae.iso /tmp/clonezilla-live-1.2.12-67-i686-pae.iso /tmp/bbb /tmp/test1.txt /tmp/test2.txt /tmp/test3.txt /tmp/test4.txt /tmp/test5.txt /tmp/test6.txt /tmp/test7.txt /tmp/aaa/test2.txt /tmp/aaa/test11.txt /tmp/aaa/test133.txt
2-1.統計情報を表示させる
「-m」オプションを付与することで、統計情報を得ることができる。
1 | fdupes -mr PATH |
[root@BS-PUB-CENT7-01 ~]# fdupes -mr /tmp/ 11 duplicate files (in 2 sets), occupying 234.9 megabytes
2-2.重複ファイルを削除する
重複したファイルを削除する場合は、「-r」オプションで対話形式での削除が行える。
1個のファイルを残して問答無用で削除する場合は、「-f」オプション(最初に検索されたファイルは除外する)と「-N」(対話形式のプロンプトを表示させずすべて削除する)オプションを組み合わせることで、それ以外の重複ファイルを削除してくれる。
1 2 | fdupes -rd PATH #対話形式での削除 fdupes -frdN PATH # 1個目に検索されたファイル以外をすべて削除 |
まぁ、実際に業務などで使うにはちょっと危険なので、一度リストをファイルに書き出してから人の判断を挟んだほうがいいだろう。