fdupes – komandų eilutės įrankis, skirtas rasti ir ištrinti pasikartojančius failus sistemoje „Linux“.


Daugeliui kompiuterių vartotojų yra įprastas reikalavimas rasti ir pakeisti pasikartojančius failus. Pasikartojančių failų paieška ir pašalinimas yra varginantis darbas, reikalaujantis laiko ir kantrybės. Pasikartojančių failų paieška gali būti labai paprasta, jei jūsų kompiuteryje yra GNU/Linux, naudojant „fdupes“ programą.

Kas yra fdupes?

Fdupes yra „Linux“ programa, kurią parašė Adrianas Lopezas C programavimo kalba, išleista pagal MIT licenciją. Programa gali rasti pasikartojančius failus nurodytame katalogų ir pakatalogių rinkinyje. „Fdupes“ atpažįsta dublikatus, lygindamas failų MD5 parašą, po kurio baitas į baitą. Su Fdupes galima perduoti daugybę parinkčių, kad būtų galima išvardyti, ištrinti ir pakeisti failus kietosiomis nuorodomis į dublikatus.

Palyginimas prasideda tokia tvarka:

dydžių palyginimas > Dalinis MD5 parašo palyginimas > Visas MD5 parašo palyginimas > Baitų palyginimas.

Įdiekite fdupes Linux

Naujausios fdupes versijos (1.51 versijos fdupes) įdiegimas taip pat paprastas, kaip vykdyti komandą Debian pagrįstose sistemose, pvz., Ubuntu ir Linux Mint.

sudo apt-get install fdupes

CentOS/RHEL ir Fedora pagrįstose sistemose turite įjungti „epel“ saugyklą, kad įdiegtumėte „fdupes“ paketą.

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

Pastaba: numatytoji paketų tvarkyklė yum pakeista dnfFedora 22 toliau…

Kaip naudoti komandą fdupes?

1. Demonstravimo tikslais sukurkime kelis pasikartojančius failus kataloge (tarkime, tecmint) tiesiog taip:

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

Vykdę aukščiau nurodytą komandą, patikrinkime, ar sukurti failų dublikatai, ar nenaudojama komanda 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

Aukščiau pateiktas scenarijus sukuria 15 failų, būtent tecmint1.txt, tecmint2.txt…tecmint15.txt ir visuose failuose yra tie patys duomenys, t.

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

2. Dabar ieškokite pasikartojančių failų aplanke 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. Ieškokite dublikatų rekursyviai kiekviename kataloge, įskaitant jo pakatalogius, naudodami parinktį -r.

Jis rekursyviai ieško visuose failuose ir aplankuose, priklausomai nuo failų ir aplankų skaičiaus, dublikatų nuskaitymas užtruks šiek tiek laiko. Per tą laiką jums bus pateikta visa pažanga terminale, kažkas panašaus į šį.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Peržiūrėkite aplanke rastų dublikatų dydį naudodami -S parinktį.

$ 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. Galite matyti pasikartojančių failų dydį kiekviename kataloge ir pakatalogiuose, vienu metu naudodami parinktis -S ir -r , kaip:

$ 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. Išskyrus paiešką viename aplanke arba visuose aplankuose rekursyviai, galite pasirinkti dviejuose arba trijuose aplankuose, jei reikia. Jau nekalbant apie tai, jei reikia, galite naudoti parinktis -S ir (arba) -r.

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

7. Norėdami ištrinti pasikartojančius failus išsaugodami kopiją, galite naudoti parinktį „-d“. Naudodami šią parinktį turėtumėte būti ypač atsargūs, nes galite prarasti reikalingus failus/duomenis ir nepamirškite, kad procesas yra neatkuriamas.

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

Galite pastebėti, kad išvardyti visi dublikatai, ir būsite paraginti ištrinti po vieną, tam tikrą diapazoną arba visus vienu metu. Norėdami ištrinti konkretaus diapazono failus, galite pasirinkti diapazoną, panašų į žemiau.

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. Saugos požiūriu galbūt norėsite išspausdinti fdupes išvestį į failą ir patikrinti tekstinį failą, kad nuspręstumėte, kurį failą ištrinti. Tai sumažina tikimybę, kad failas bus netyčia ištrintas. Galite padaryti:

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

Pastaba: galite pakeisti „/home“ norimu aplanku. Taip pat naudokite parinktis „-r“ ir „-S“, jei norite ieškoti rekursyviai ir atitinkamai spausdinimo dydį.

9. Galite praleisti pirmąjį failą iš kiekvieno atitikčių rinkinio naudodami parinktį „-f“.

Pirmasis katalogo failų sąrašas.

$ 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

ir tada praleiskite pirmąjį failą iš kiekvieno atitikmenų rinkinio.

$ 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. Patikrinkite įdiegtą fdupes versiją.

$ fdupes --version

fdupes 1.51

11. Jei jums reikia pagalbos dėl fdupes, galite naudoti jungiklį „-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

Tai dabar visiems. Praneškite man, kaip iki šiol radote ir ištrynėte pasikartojančius failus „Linux“? ir taip pat pasakykite man savo nuomonę apie šią priemonę. Pateikite savo vertingą atsiliepimą žemiau esančiame komentarų skiltyje ir nepamirškite pamėgti/pasidalyti mumis ir padėkite mums skleistis.

Aš dirbu su kita programa, vadinama fslint, kad pašalinčiau pasikartojančius failus, netrukus paskelbsiu ir jums, žmonėms, patiks skaityti.