fdupes - komentorivityökalu, jolla voit etsiä ja poistaa päällekkäisiä tiedostoja Linuxissa


Useimmille tietokoneen käyttäjille on yleinen vaatimus löytää ja korvata päällekkäisiä tiedostoja. Päällekkäisten tiedostojen etsiminen ja poistaminen on väsyttävää työtä, joka vaatii aikaa ja kärsivällisyyttä. Päällekkäisten tiedostojen löytäminen voi olla erittäin helppoa, jos koneessasi on GNU/Linux, fdupes-apuohjelman ansiosta.

Mikä on fdupes?

Fdupes on Linux-apuohjelma, jonka on kirjoittanut Adrian Lopez C-ohjelmointikielellä, joka on julkaistu MIT-lisenssillä. Sovellus pystyy löytämään päällekkäisiä tiedostoja annetuista hakemistoista ja alihakemistoista. Fdupes tunnistaa kaksoiskappaleet vertaamalla tiedostojen MD5-allekirjoituksia, joita seuraa tavujen välinen vertailu. Fdupesilla voidaan välittää monia vaihtoehtoja tiedostojen luetteloimiseksi, poistamiseksi ja korvaamiseksi kiintolinkeillä kaksoiskappaleisiin.

Vertailu alkaa järjestyksessä:

Kokojen vertailu > Osittainen MD5-allekirjoituksen vertailu > Täydellinen MD5-allekirjoituksen vertailu > tavujen välinen vertailu.

Asenna fdupes Linuxiin

Uusimman fdupes-version (fdupes-versio 1.51) asentaminen on yhtä helppoa kuin seuraavan komennon suorittaminen Debian-pohjaisissa järjestelmissä, kuten Ubuntu ja Linux Mint.

sudo apt-get install fdupes

CentOS/RHEL- ja Fedora-pohjaisissa järjestelmissä sinun on otettava epel-tietovarasto käyttöön fdupes-paketin asentamiseksi.

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

Huomaa: Oletuspakettien hallinta yum on korvattu Dnf:llä Fedora 22:sta eteenpäin…

Miten fdupes-komentoa käytetään?

1. Esittelytarkoituksessa luodaan muutama kaksoistiedosto hakemistoon (kuten tecmint) seuraavasti:

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

Yllä olevan komennon suorittamisen jälkeen tarkistetaan, että tiedostojen kaksoiskappaleet on luotu vai ei käytetä ls-komentoa.

$ 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

Yllä oleva komentosarja luo 15 tiedostoa, nimittäin tecmint1.txt, tecmint2.txt…tecmint15.txt ja jokainen tiedosto sisältää saman tiedon, esim.

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

2. Etsi nyt päällekkäisiä tiedostoja kansiosta 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. Etsi kopioita rekursiivisesti jokaisesta hakemistosta, mukaan lukien sen alihakemistot, käyttämällä -r-vaihtoehtoa.

Se etsii kaikista tiedostoista ja kansioista rekursiivisesti, riippuen tiedostojen ja kansioiden määrästä, kopioiden tarkistaminen kestää jonkin aikaa. Sillä välin sinulle esitetään terminaalin kokonaisedistyminen, jotain tämän kaltaista.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Katso kansiosta löydettyjen kaksoiskappaleiden koko -S-vaihtoehdon avulla.

$ 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. Voit nähdä päällekkäisten tiedostojen koon jokaisessa hakemistossa ja alihakemistossa käyttämällä -S- ja -r-vaihtoehtoja samanaikaisesti. , kuten:

$ 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. Muuten kuin yhdestä kansiosta tai kaikista kansioista rekursiivisesti hakemisen lisäksi voit valita kahdesta kansiosta tai kolmesta kansiosta tarpeen mukaan. Puhumattakaan voit käyttää vaihtoehtoja -S ja/tai -r tarvittaessa.

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

7. Jos haluat poistaa päällekkäiset tiedostot säilyttäen samalla kopion, voit käyttää vaihtoehtoa '-d'. Tätä vaihtoehtoa käytettäessä tulee olla erityisen varovainen, muuten saatat menettää tarvittavat tiedostot/tiedot ja muistaa, että prosessia ei voida palauttaa.

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

Saatat huomata, että kaikki kaksoiskappaleet on lueteltu ja sinua kehotetaan poistamaan joko yksitellen tai tietty alue tai kaikki kerralla. Voit valita jonkin alla olevan alueen poistaaksesi tietyn alueen tiedostot.

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. Turvallisuussyistä saatat haluta tulostaa "fdupes" -tulosteen tiedostoon ja tarkistaa sitten tekstitiedoston päättääksesi, mikä tiedosto poistetaan. Tämä vähentää mahdollisuuksia saada tiedostosi poistettua vahingossa. Voit tehdä

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

Huomaa: voit korvata '/home' haluamallasi kansiolla. Käytä myös vaihtoehtoja '-r' ja '-S', jos haluat etsiä rekursiivisesti ja tulostuskokoa.

9. Voit jättää ensimmäisen tiedoston pois kustakin osumajoukosta käyttämällä vaihtoehtoa '-f'.

Ensimmäinen luettelo hakemiston tiedostoista.

$ 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

ja jätä sitten pois ensimmäinen tiedosto kustakin osumajoukosta.

$ 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. Tarkista fdupesin asennettu versio.

$ fdupes --version

fdupes 1.51

11. Jos tarvitset apua fdupes-asioissa, voit käyttää kytkintä '-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

Se on nyt kaikille. Kerro minulle, kuinka löysit ja poistit tiedostojen kaksoiskappaleita tähän asti Linuxissa? ja kerro myös mielipiteesi tästä apuohjelmasta. Laita arvokas palautteesi alla olevaan kommenttiosioon ja älä unohda tykätä/jakaa meistä ja auta meitä leviämään.

Työskentelen toisessa fslint-nimisessä apuohjelmassa tiedostojen kaksoiskappaleiden poistamiseksi, julkaisen pian ja te ihmiset rakastatte lukea.