fdupes - Et kommandolinjeverktøy for å finne og slette dupliserte filer i Linux


Det er et vanlig krav å finne og erstatte dupliserte filer for de fleste databrukere. Å finne og fjerne dupliserte filer er en slitsom jobb som krever tid og tålmodighet. Å finne dupliserte filer kan være veldig enkelt hvis maskinen din er drevet av GNU/Linux, takket være «fdupes»-verktøyet.

Hva er fdupes?

Fdupes er et Linux-verktøy skrevet av Adrian LopezC programmeringsspråk utgitt under MIT-lisens. Applikasjonen er i stand til å finne dupliserte filer i det gitte settet med kataloger og underkataloger. Fdupes gjenkjenner duplikater ved å sammenligne MD5-signaturen til filer etterfulgt av en byte-til-byte-sammenligning. Mange alternativer kan sendes med Fdupes for å liste, slette og erstatte filene med harde lenker til duplikater.

Sammenligningen starter i rekkefølgen:

størrelsessammenligning > Delvis MD5-signatursammenligning > Full MD5-signatursammenligning > byte-til-byte-sammenligning.

Installer fdupes på en Linux

Installasjon av siste versjon av fdupes (fdupes versjon 1.51) like enkelt som å kjøre følgende kommando på Debian-baserte systemer som Ubuntu og Linux Mint.

sudo apt-get install fdupes

CentOS/RHEL- og Fedora-baserte systemer, må du slå på epel-repository for å installere fdupes-pakken.

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

Merk: Standard pakkebehandling yum er erstattet av dnf fra Fedora 22 videre…

Hvordan bruker jeg kommandoen fdupes?

1. For demonstrasjonsformål, la oss lage noen dupliserte filer under en katalog (si tecmint) ganske enkelt som:

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

Etter å ha kjørt kommandoen ovenfor, la oss kontrollere at duplikatfilene er opprettet eller ikke bruker ls-kommandoen.

$ 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

Skriptet ovenfor oppretter 15 filer, nemlig tecmint1.txt, tecmint2.txt…tecmint15.txt og hver fil inneholder de samme dataene, dvs.

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

2. Søk nå etter dupliserte filer i mappen 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. Søk etter duplikater rekursivt under hver katalog, inkludert dens underkataloger, ved å bruke -r-alternativet.

Den søker på tvers av alle filene og mappene rekursivt, avhengig av antall filer og mapper vil det ta litt tid å skanne duplikater. I mellomtiden vil du bli presentert med den totale fremdriften i terminal, noe sånt som dette.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Se størrelsen på duplikater som finnes i en mappe ved å bruke -S-alternativet.

$ 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. Du kan se størrelsen på dupliserte filer for hver katalog og underkataloger som oppstår i ved å bruke -S og -r alternativene samtidig , som:

$ 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. Annet enn å søke i én mappe eller alle mappene rekursivt, kan du velge mellom to mapper eller tre mapper etter behov. For ikke å nevne at du kan bruke alternativet -S og/eller -r om nødvendig.

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

7. For å slette de dupliserte filene mens du beholder en kopi, kan du bruke alternativet '-d'. Vær ekstra forsiktig når du bruker dette alternativet, ellers kan du ende opp med å miste nødvendige filer/data, og pass på at prosessen ikke kan gjenopprettes.

$ 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]: 

Du kan legge merke til at alle duplikatene er oppført og du blir bedt om å slette, enten én etter én eller et bestemt område eller alle på én gang. Du kan velge et område slik som nedenfor for å slette filfiler med et spesifikt område.

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. Fra sikkerhetssynspunkt kan det være lurt å skrive ut utdataene fra 'fdupes' til fil og deretter sjekke tekstfilen for å bestemme hvilken fil som skal slettes. Dette reduserer sjansene for å få filen slettet ved et uhell. Du kan gjøre:

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

Merk: Du kan erstatte ‘/home’ med ønsket mappe. Bruk også alternativene '-r' og '-S' hvis du vil søke henholdsvis rekursivt og utskriftsstørrelse.

9. Du kan utelate den første filen fra hvert sett med samsvar ved å bruke alternativet '-f'.

First List filer i katalogen.

$ 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

og slipp deretter den første filen fra hvert sett med treff.

$ 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. Sjekk installert versjon av fdupes.

$ fdupes --version

fdupes 1.51

11. Hvis du trenger hjelp med fdupes, kan du bruke bryteren '-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

Det er for alle nå. Fortell meg hvordan du fant og slettet duplikater til nå i Linux? og fortell meg også din mening om dette verktøyet. Legg inn din verdifulle tilbakemelding i kommentarfeltet nedenfor, og ikke glem å like/dele oss og hjelpe oss med å spre oss.

Jeg jobber med et annet verktøy kalt fslint for å fjerne dupliserte filer, vil snart legge ut og dere vil elske å lese.