fdupes - Alat naredbenog retka za pronalaženje i brisanje dupliciranih datoteka u Linuxu
Uobičajeni je zahtjev pronalaženja i zamjene dupliciranih datoteka za većinu korisnika računala. Pronalaženje i uklanjanje dupliciranih datoteka dosadan je posao koji zahtijeva vrijeme i strpljenje. Pronalaženje dupliciranih datoteka može biti vrlo jednostavno ako vaš stroj pokreće GNU/Linux, zahvaljujući uslužnom programu 'fdupes'.
Fdupes je Linux uslužni program koji je napisao Adrian Lopez na programskom jeziku C objavljen pod licencom MIT. Aplikacija može pronaći duplicirane datoteke u zadanom nizu direktorija i poddirektorijuma. Fdupes prepoznaje duplikate uspoređujući MD5 potpis datoteka nakon čega slijedi usporedba bajta u bajt. Puno opcija može se proslijediti pomoću Fdupesa za popis, brisanje i zamjenu datoteka tvrdim vezama u duplikate.
Usporedba započinje redoslijedom:
usporedba veličina> Djelomična usporedba potpisa MD5> Potpuna usporedba potpisa MD5> Usporedba između bajtova.
Instalirajte fdupes na Linux
Instalacija najnovije verzije fdupes-a (fdupes verzija 1.51) jednostavna je poput pokretanja sljedeće naredbe na sustavima temeljenim na Debianu kao što su Ubuntu i Linux Mint.
$ sudo apt-get install fdupes
Na sustavima koji se temelje na CentOS/RHEL i Fedori, morate uključiti epel spremište da biste instalirali fdupes paket.
# yum install fdupes # dnf install fdupes [On Fedora 22 onwards]
Napomena: Zadani upravitelj paketa yum zamjenjuje se dnf od Fedore 22 nadalje ...
Kako koristiti naredbu fdupes?
1. U svrhu demonstracije, napravimo nekoliko dupliciranih datoteka u direktoriju (recimo tecmint) jednostavno kao:
$ 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
Nakon pokretanja gornje naredbe, provjerimo jesu li duplikati datoteke stvoreni ili ne koriste naredbu 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
Gornja skripta stvara 15 datoteka, naime tecmint1.txt, tecmint2.txt ... tecmint15.txt i sve datoteke sadrže iste podatke, tj.
"I Love Tecmint. Tecmint is a very nice community of Linux Users."
2. Sada potražite duplicirane datoteke u mapi 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. Rekurzivno tražite duplikate u svakom direktoriju, uključujući poddirektorijume, koristeći opciju -r.
Rekurzivno pretražuje sve datoteke i mape, ovisno o broju datoteka i mapa, trebat će neko vrijeme za skeniranje duplikata. U to vrijeme prikazat će vam se ukupan napredak na terminalu, otprilike ovako.
$ fdupes -r /home Progress [37780/54747] 69%
4. Pogledajte veličinu duplikata pronađenih u mapi pomoću opcije -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. Možete vidjeti veličinu dupliciranih datoteka za svaki direktorij i poddirektorijume koji se nađu unutar korištenja opcija -S i -r istovremeno, kao:
$ 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. Osim pretraživanja u jednoj ili svim mapama rekurzivno, prema potrebi možete odabrati dvije ili tri mape. Da ne spominjem, možete koristiti opciju -S i/ili -r ako je potrebno.
$ fdupes /home/avi/Desktop/ /home/avi/Templates/
7. Za brisanje dupliciranih datoteka uz očuvanje kopije možete upotrijebiti opciju '-d'. Treba biti na oprezu dok koristite ovu opciju jer u protivnom možete izgubiti potrebne datoteke/podatke, ali imajte na umu da je taj postupak nemoguće obnoviti.
$ 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]:
Možda ćete primijetiti da su svi duplikati navedeni i od vas će se zatražiti da izbrišete, jedan po jedan ili određeni raspon ili sve u jednom potezu. Možete odabrati raspon nešto poput dolje za brisanje datoteka određenog raspona.
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. Sa sigurnosne točke gledišta, možda biste željeli ispisati izlaz "fdupes" u datoteku, a zatim provjeriti tekstualnu datoteku da biste odlučili koju datoteku želite izbrisati. To smanjuje šanse za slučajno brisanje datoteke. Možete učiniti:
$ fdupes -Sr /home > /home/fdupes.txt
Napomena: ‘/ home’ možete zamijeniti željenom mapom. Također upotrijebite opcije '-r' i '-S' ako želite pretraživati rekurzivno, odnosno Veličina ispisa.
9. Možete izostaviti prvu datoteku iz svakog skupa podudaranja pomoću opcije '-f'.
Datoteke prvog popisa u direktoriju.
$ 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
a zatim izostavite prvu datoteku iz svakog skupa podudaranja.
$ 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. Provjerite instaliranu verziju fdupesa.
$ fdupes --version fdupes 1.51
11. Ako vam je potrebna pomoć na fdupesima, možete upotrijebiti prekidač '-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
To je sada za sve. Javite mi kako ste do sada pronalazili i brisali duplikate datoteka u Linuxu? a također mi recite svoje mišljenje o ovom uslužnom programu. Stavite svoje vrijedne povratne informacije u odjeljak za komentare u nastavku i ne zaboravite nas lajkati/dijeliti i pomoći nam da se proširimo.
Radim na drugom uslužnom programu koji se zove fslint za uklanjanje dupliciranih datoteka, uskoro će se objaviti, a vi ćete voljeti čitati.