fdupes - Alat komandne linije za pronalaženje i brisanje dupliciranih datoteka u Linuxu
Uobičajen je zahtjev za pronalaženje i zamjenu duplikata datoteka za većinu korisnika računara. Pronalaženje i uklanjanje duplikata je naporan posao koji zahtijeva vrijeme i strpljenje. Pronalaženje duplikata može biti vrlo lako ako vaš stroj pokreće GNU/Linux, zahvaljujući uslužnom programu „fdupes“.
Šta je fdupes?
Fdupes je Linux uslužni program koji je napisao Adrian Lopez na C programskom jeziku objavljen pod MIT licencom. Aplikacija može pronaći duple datoteke u datom skupu direktorija i poddirektorija. Fdupes prepoznaje duplikate upoređujući MD5 potpis datoteka nakon čega slijedi poređenje bajta po bajt. Mnogo opcija se može prenijeti sa Fdupes-om za listanje, brisanje i zamjenu datoteka tvrdim vezama do duplikata.
Poređenje počinje redoslijedom:
Poređenje veličina > Djelomično poređenje MD5 potpisa > Potpuno poređenje MD5 potpisa > Poređenje bajta do bajta.
Instalirajte fdupe na Linux
Instalacija najnovije verzije fdupe-a (fdupes verzija 1.51) je jednostavna kao i pokretanje sljedeće naredbe na Debian sistemima kao što su Ubuntu i Linux Mint.
sudo apt-get install fdupes
Na sistemima baziranim na CentOS/RHEL i Fedora, morate uključiti epel repozitorij da biste instalirali fdupes paket.
yum install fdupes
dnf install fdupes [On Fedora 22 onwards]
Napomena: Zadani upravitelj paketa yum je zamijenjen sa dnf iz Fedora 22 dalje…
Kako koristiti naredbu fdupes?
1. U svrhu demonstracije, napravimo nekoliko dupliranih 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 što pokrenemo gornju naredbu, provjerimo jesu li duplikati datoteka kreirani ili ne koristeći komandu 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 kreira 15 fajlova i to tecmint1.txt, tecmint2.txt…tecmint15.txt i svaki fajl sadrži iste podatke, tj.
"I Love Tecmint. Tecmint is a very nice community of Linux Users."
2. Sada potražite duple fajlove unutar foldera 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. Potražite duplikate rekurzivno u svakom direktoriju uključujući i njegove poddirektorije koristeći opciju -r.
Pretražuje sve datoteke i mape rekurzivno, ovisno o broju datoteka i mapa, potrebno je neko vrijeme za skeniranje duplikata. U međuvremenu, biće vam predstavljen ukupni napredak u terminalu, otprilike ovako.
$ fdupes -r /home
Progress [37780/54747] 69%
4. Pogledajte veličinu duplikata pronađenih unutar foldera koristeći opciju -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 poddirektorije na koje se naiđe koristeći -S i -r opcije u isto vrijeme , 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 jednom folderu ili u svim folderima rekurzivno, možete odabrati da odaberete dva ili tri foldera prema potrebi. Da ne spominjemo da možete koristiti opciju -S i/ili -r ako je potrebno.
fdupes /home/avi/Desktop/ /home/avi/Templates/
7. Za brisanje duplikata fajlova uz očuvanje kopije možete koristiti opciju ‘-d’. Treba biti posebno oprezan dok koristite ovu opciju, inače možete izgubiti potrebne datoteke/podatke i imajte na umu da je proces nepopravljiv.
$ 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 se traži da izbrišete, bilo jedan po jedan ili određeni raspon ili sve u jednom potezu. Možete odabrati raspon nešto kao ispod da izbrišete datoteke 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 tačke gledišta, možda biste željeli ispisati izlaz ‘fdupes’ u datoteku, a zatim provjeriti tekstualnu datoteku da odlučite koju datoteku želite izbrisati. Ovo smanjuje šanse da se vaš fajl slučajno izbriše. Možete učiniti:
fdupes -Sr /home > /home/fdupes.txt
Napomena: ‘/home’ možete zamijeniti željenim folderom. Također koristite opciju ‘-r’ i ‘-S’ ako želite pretraživati rekurzivno i veličinu ispisa, respektivno.
9. Možete izostaviti prvi fajl iz svakog skupa podudaranja koristeći opciju ‘-f’.
Prva lista datoteka direktorija.
$ 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 prvi fajl 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 fdupea.
$ fdupes --version
fdupes 1.51
11. Ako vam je potrebna pomoć oko fdupe-a, možete koristiti 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 za sve sada. Javite mi kako ste do sada pronalazili i brisali duplikate u Linuxu? i recite mi svoje mišljenje o ovom uslužnom programu. Stavite svoje vrijedne povratne informacije u odjeljak za komentare ispod i ne zaboravite nas lajkovati/podijeliti i pomozite nam da se širimo.
Radim na drugom uslužnom programu zvanom fslint za uklanjanje duplikata datoteka, uskoro ću objaviti i vi ćete voljeti čitati.