fdupes - komandrindas rīks, lai atrastu un izdzēstu dublētus failus Linux


Lielākai daļai datoru lietotāju ir izplatīta prasība atrast un aizstāt failu dublikātus. Failu dublikātu atrašana un noņemšana ir nogurdinošs darbs, kas prasa laiku un pacietību. Failu dublikātu atrašana var būt ļoti vienkārša, ja jūsu mašīnu darbina GNU/Linux, pateicoties ‘fdupes’ lietderībai.

Fdupes ir Linux utilīta, kuru Adrian Lopez ir uzrakstījis C programmēšanas valodā, kas izlaista ar MIT licenci. Lietojumprogramma spēj atrast failu dublikātus norādītajā direktoriju un apakšdirektoriju komplektā. Fdupes atpazīst dublikātus, salīdzinot failu MD5 parakstu, kam seko bitu-baitu salīdzinājums. Izmantojot Fdupes, var tikt nodotas daudzas iespējas, lai uzskaitītu, izdzēstu un aizstātu failus ar stingrām saitēm uz dublikātiem.

Salīdzinājums sākas secībā:

izmēru salīdzinājums> Daļējs MD5 parakstu salīdzinājums> Pilns MD5 parakstu salīdzinājums> Bitu-baitu salīdzinājums.

Instalējiet fdupes uz Linux

Jaunākās fdupes versijas (fdupes versija 1.51) instalēšana ir tikpat vienkārša kā komandas izpildīšana Debian sistēmās, piemēram, Ubuntu un Linux Mint.

$ sudo apt-get install fdupes

CentOS/RHEL un Fedora sistēmās ir jāieslēdz epel krātuve, lai instalētu fdupes pakotni.

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

Piezīme: noklusējuma pakotņu pārvaldnieku yum aizstāj ar dnf, sākot no Fedora 22 ...

Kā izmantot komandu fdupes?

1. Demonstrēšanas nolūkos izveidosim dažus failu dublikātus direktorijā (teiksim tecmint) vienkārši šādi:

$ 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

Pēc komandas palaišanas pārbaudīsim, vai dublikātu faili ir izveidoti vai netiek izmantoti, izmantojot 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

Iepriekš minētais skripts izveido 15 failus, proti, tecmint1.txt, tecmint2.txt… tecmint15.txt, un visos failos ir vienādi dati, t.i.

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

2. Tagad meklējiet failu dublikātus mapē 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. Meklējiet dublikātus rekursīvi katrā direktorijā, ieskaitot tā apakšdirektorijus, izmantojot opciju -r.

Tas veic rekursīvu meklēšanu visos failos un mapēs atkarībā no failu un mapju skaita, dublikātu skenēšanai būs vajadzīgs zināms laiks. Šajā laikā jums tiks parādīts kopējais progress terminālā, kaut kas līdzīgs šim.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Skatiet mapē atrodamo dublikātu lielumu, izmantojot 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. Vienlaicīgi izmantojot opcijas -S un -r, varat redzēt visu mapju un apakšdirektoriju dublēto failu lielumu, izmantojot:

$ 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. Izņemot meklēšanu vienā mapē vai visās mapēs rekursīvi, varat izvēlēties izvēlēties divas mapes vai trīs mapes pēc nepieciešamības. Nemaz nerunājot, jūs varat izmantot opciju -S un/vai -r, ja nepieciešams.

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

7. Lai izdzēstu failu dublikātus, saglabājot kopiju, varat izmantot opciju ‘-d’. Lietojot šo opciju, jābūt īpaši piesardzīgam, jo citādi jūs varat zaudēt nepieciešamos failus/datus un domāt, ka procesu nevar atgūt.

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

Jūs varat pamanīt, ka visi dublikāti ir uzskaitīti, un jums tiek piedāvāts dzēst vai nu pa vienam, vai noteiktam diapazonam, vai arī visus vienā piegājienā. Jūs varat izvēlēties diapazonu, piemēram, zemāk, lai izdzēstu noteikta diapazona failu failus.

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. No drošības viedokļa, iespējams, vēlēsities izdrukāt failu “fdupes” un pēc tam pārbaudīt teksta failu, lai izlemtu, kuru failu izdzēst. Tas samazina iespēju nejauši izdzēst failu. Jūs varat darīt:

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

Piezīme: Jūs varat aizstāt “/ home” ar vēlamo mapi. Izmantojiet arī opcijas ‘-r’ un ‘-S’, ja vēlaties meklēt attiecīgi rekursīvi un Print Size.

9. Varat izlaist pirmo failu no katras atbilstības kopas, izmantojot opciju ‘-f’.

First List direktorija faili.

$ 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

un pēc tam izlaidiet pirmo failu no katra atbilstības komplekta.

$ 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. Pārbaudiet instalēto fdupes versiju.

$ fdupes --version

fdupes 1.51

11. Ja jums nepieciešama palīdzība attiecībā uz fdupes, varat izmantot slēdzi ‘-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

Tas ir visiem tagad. Ļaujiet man uzzināt, kā jūs līdz šim atradāt un izdzēsāt failu dublikātus Linux? un arī pastāstiet man savu viedokli par šo lietderību. Ievietojiet vērtīgās atsauksmes komentāru sadaļā zemāk un neaizmirstiet mums patikt/dalīties ar mums un palīdzēt mums izplatīties.

Es strādāju pie citas lietderības, ko sauc par fslint, lai noņemtu failu dublikātus, drīz publicēšu, un jūs, cilvēki, labprāt lasīsit.