fdupes - Alat Baris Perintah untuk Menemukan dan Menghapus File Duplikat di Linux


Ini adalah persyaratan umum untuk menemukan dan mengganti file duplikat bagi sebagian besar pengguna komputer. Menemukan dan menghapus file duplikat adalah pekerjaan melelahkan yang menuntut waktu dan kesabaran. Menemukan file duplikat bisa sangat mudah jika mesin Anda didukung oleh GNU/Linux, berkat utilitas 'fdupes'.

Apa itu fdupes?

Fdupes adalah utilitas Linux yang ditulis oleh Adrian Lopez dalam Bahasa pemrograman C yang dirilis di bawah Lisensi MIT. Aplikasi ini dapat menemukan file duplikat di kumpulan direktori dan subdirektori tertentu. Fdupes mengenali duplikat dengan membandingkan tanda tangan file MD5 diikuti dengan perbandingan byte-ke-byte. Banyak pilihan yang dapat diberikan dengan Fdupes untuk membuat daftar, menghapus dan mengganti file dengan hardlink ke duplikat.

Perbandingannya dimulai dengan urutan:

perbandingan ukuran > Perbandingan Tanda Tangan MD5 Parsial > Perbandingan Tanda Tangan MD5 Penuh > Perbandingan Byte-to-Byte.

Instal fdupes di Linux

Pemasangan fdupes versi terbaru (fdupes versi 1.51) semudah menjalankan perintah berikut pada sistem berbasis Debian seperti Ubuntu dan Linux Mint.

sudo apt-get install fdupes

Pada sistem berbasis CentOS/RHEL dan Fedora, Anda perlu mengaktifkan repositori epel untuk menginstal paket fdupes.

yum install fdupes
dnf install fdupes    [On Fedora 22 onwards]

Catatan: Manajer paket default yum digantikan oleh dnf dari Fedora 22 seterusnya…

Bagaimana cara menggunakan perintah fdupes?

1. Untuk tujuan demonstrasi, mari kita membuat beberapa file duplikat di bawah direktori (misalnya tecmint) seperti:

mkdir /home/"$USER"/Desktop/tecmint && cd /home/"$USER"/Desktop/tecmint && for i in {1..15}; do echo "I Love Tecmint. Tecmint is a very nice community of Linux Users." > tecmint${i}.txt ; done

Setelah menjalankan perintah di atas, mari kita verifikasi apakah file duplikat dibuat atau tidak menggunakan perintah ls.

$ ls -l

total 60
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint10.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint11.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint12.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint13.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint14.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint15.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint1.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint2.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint3.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint4.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint5.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint6.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint7.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint8.txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9.txt

Skrip di atas membuat 15 file yaitu tecmint1.txt, tecmint2.txt…tecmint15.txt dan setiap file berisi data yang sama yaitu,

"I Love Tecmint. Tecmint is a very nice community of Linux Users."

2. Sekarang cari file duplikat di dalam folder tecmint.

$ fdupes /home/$USER/Desktop/tecmint 

/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

3. Telusuri duplikat secara rekursif pada setiap direktori termasuk subdirektorinya menggunakan opsi -r.

Ini mencari di semua file dan folder secara rekursif, tergantung pada jumlah file dan folder, diperlukan beberapa waktu untuk memindai duplikat. Sementara itu, Anda akan disajikan dengan kemajuan total di terminal, kira-kira seperti ini.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Lihat ukuran duplikat yang ditemukan dalam folder menggunakan opsi -S.

$ fdupes -S /home/$USER/Desktop/tecmint

65 bytes each:                          
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

5. Anda dapat melihat ukuran file duplikat untuk setiap direktori dan subdirektori yang ditemukan menggunakan opsi -S dan -r secara bersamaan , sebagai:

$ fdupes -Sr /home/avi/Desktop/

65 bytes each:                          
/home/tecmint/Desktop/tecmint/tecmint13.txt
/home/tecmint/Desktop/tecmint/tecmint8.txt
/home/tecmint/Desktop/tecmint/tecmint11.txt
/home/tecmint/Desktop/tecmint/tecmint3.txt
/home/tecmint/Desktop/tecmint/tecmint4.txt
/home/tecmint/Desktop/tecmint/tecmint6.txt
/home/tecmint/Desktop/tecmint/tecmint7.txt
/home/tecmint/Desktop/tecmint/tecmint9.txt
/home/tecmint/Desktop/tecmint/tecmint10.txt
/home/tecmint/Desktop/tecmint/tecmint2.txt
/home/tecmint/Desktop/tecmint/tecmint5.txt
/home/tecmint/Desktop/tecmint/tecmint14.txt
/home/tecmint/Desktop/tecmint/tecmint1.txt
/home/tecmint/Desktop/tecmint/tecmint15.txt
/home/tecmint/Desktop/tecmint/tecmint12.txt

107 bytes each:
/home/tecmint/Desktop/resume_files/r-csc.html
/home/tecmint/Desktop/resume_files/fc.html

6. Selain mencari dalam satu folder atau semua folder secara rekursif, Anda dapat memilih dalam dua folder atau tiga folder sesuai kebutuhan. Belum lagi Anda dapat menggunakan opsi -S dan/atau -r jika diperlukan.

fdupes /home/avi/Desktop/ /home/avi/Templates/

7. Untuk menghapus file duplikat sambil menyimpan salinannya, Anda dapat menggunakan opsi '-d'. Kehati-hatian ekstra harus diberikan saat menggunakan opsi ini, jika tidak, Anda mungkin akan kehilangan file/data yang diperlukan dan ingatlah bahwa prosesnya tidak dapat dipulihkan.

$ fdupes -d /home/$USER/Desktop/tecmint

[1] /home/tecmint/Desktop/tecmint/tecmint13.txt
[2] /home/tecmint/Desktop/tecmint/tecmint8.txt
[3] /home/tecmint/Desktop/tecmint/tecmint11.txt
[4] /home/tecmint/Desktop/tecmint/tecmint3.txt
[5] /home/tecmint/Desktop/tecmint/tecmint4.txt
[6] /home/tecmint/Desktop/tecmint/tecmint6.txt
[7] /home/tecmint/Desktop/tecmint/tecmint7.txt
[8] /home/tecmint/Desktop/tecmint/tecmint9.txt
[9] /home/tecmint/Desktop/tecmint/tecmint10.txt
[10] /home/tecmint/Desktop/tecmint/tecmint2.txt
[11] /home/tecmint/Desktop/tecmint/tecmint5.txt
[12] /home/tecmint/Desktop/tecmint/tecmint14.txt
[13] /home/tecmint/Desktop/tecmint/tecmint1.txt
[14] /home/tecmint/Desktop/tecmint/tecmint15.txt
[15] /home/tecmint/Desktop/tecmint/tecmint12.txt

Set 1 of 1, preserve files [1 - 15, all]: 

Anda mungkin memperhatikan bahwa semua duplikat terdaftar dan Anda diminta untuk menghapus, baik satu per satu atau rentang tertentu atau semuanya sekaligus. Anda dapat memilih rentang seperti di bawah ini untuk menghapus file dengan rentang tertentu.

Set 1 of 1, preserve files [1 - 15, all]: 2-15

   [-] /home/tecmint/Desktop/tecmint/tecmint13.txt
   [+] /home/tecmint/Desktop/tecmint/tecmint8.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint11.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint3.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint4.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint6.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint7.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint9.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint10.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint2.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint5.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint14.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint1.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint15.txt
   [-] /home/tecmint/Desktop/tecmint/tecmint12.txt

8. Dari sudut pandang keamanan, Anda mungkin ingin mencetak keluaran 'fdupes' ke file dan kemudian memeriksa file teks untuk memutuskan file mana yang akan dihapus. Ini mengurangi kemungkinan file Anda terhapus secara tidak sengaja. Anda dapat melakukan:

fdupes -Sr /home > /home/fdupes.txt

Catatan: Anda dapat mengganti '/home' dengan folder yang Anda inginkan. Gunakan juga opsi '-r' dan '-S' jika Anda ingin mencari secara rekursif dan Ukuran Cetak.

9. Anda dapat menghilangkan file pertama dari setiap rangkaian kecocokan dengan menggunakan opsi '-f'.

Daftar pertama file direktori.

$ ls -l /home/$USER/Desktop/tecmint

total 20
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (3rd copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (4th copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (another copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9 (copy).txt
-rw-r--r-- 1 tecmint tecmint 65 Aug  8 11:22 tecmint9.txt

lalu hilangkan file pertama dari setiap rangkaian kecocokan.

$ fdupes -f /home/$USER/Desktop/tecmint

/home/tecmint/Desktop/tecmint9 (copy).txt
/home/tecmint/Desktop/tecmint9 (3rd copy).txt
/home/tecmint/Desktop/tecmint9 (another copy).txt
/home/tecmint/Desktop/tecmint9 (4th copy).txt

10. Periksa versi fdupes yang terinstal.

$ fdupes --version

fdupes 1.51

11. Jika Anda memerlukan bantuan tentang fdupes, Anda dapat menggunakan tombol '-h'.

$ fdupes -h

Usage: fdupes [options] DIRECTORY...

 -r --recurse     	for every directory given follow subdirectories
                  	encountered within
 -R --recurse:    	for each directory given after this option follow
                  	subdirectories encountered within (note the ':' at
                  	the end of the option, manpage for more details)
 -s --symlinks    	follow symlinks
 -H --hardlinks   	normally, when two or more files point to the same
                  	disk area they are treated as non-duplicates; this
                  	option will change this behavior
 -n --noempty     	exclude zero-length files from consideration
 -A --nohidden    	exclude hidden files from consideration
 -f --omitfirst   	omit the first file in each set of matches
 -1 --sameline    	list each set of matches on a single line
 -S --size        	show size of duplicate files
 -m --summarize   	summarize dupe information
 -q --quiet       	hide progress indicator
 -d --delete      	prompt user for files to preserve and delete all
                  	others; important: under particular circumstances,
                  	data may be lost when using this option together
                  	with -s or --symlinks, or when specifying a
                  	particular directory more than once; refer to the
                  	fdupes documentation for additional information
 -N --noprompt    	together with --delete, preserve the first file in
                  	each set of duplicates and delete the rest without
                  	prompting the user
 -v --version     	display fdupes version
 -h --help        	display this help message

Itu saja sekarang. Beri tahu saya bagaimana Anda menemukan dan menghapus file duplikat hingga saat ini di Linux? dan juga beri tahu saya pendapat Anda tentang utilitas ini. Berikan tanggapan Anda yang berharga di bagian komentar di bawah dan jangan lupa untuk menyukai/membagikan kami dan membantu kami menyebarkannya.

Saya sedang mengerjakan utilitas lain bernama fslint untuk menghapus file duplikat, akan segera memposting dan Anda akan senang membaca.