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 Lopez på C 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
På 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.