fdupes - Usa ka Himan sa Command Line sa Pagpangita ug Pagtangtang sa mga Duplicate nga File sa Linux


Kini usa ka kasagaran nga kinahanglanon sa pagpangita ug pag-ilis sa mga duplicate nga mga file alang sa kadaghanan sa mga tiggamit sa kompyuter. Ang pagpangita ug pagtangtang sa mga duplicate nga mga file usa ka kapoy nga trabaho nga nanginahanglan oras ug pasensya. Ang pagpangita og mga duplicate nga mga file mahimong sayon kaayo kung ang imong makina gipadagan sa GNU/Linux, salamat sa 'fdupes' utility.

Ang Fdupes usa ka Linux utility nga gisulat ni Adrian Lopez sa C programming Language nga gipagawas ubos sa MIT License. Ang aplikasyon makahimo sa pagpangita sa mga duplicate nga mga file sa gihatag nga set sa mga direktoryo ug mga sub-direktoryo. Ang Fdupes nakaila sa mga duplicate pinaagi sa pagtandi sa MD5 nga pirma sa mga file nga gisundan sa usa ka byte-to-byte nga pagtandi. Daghang mga kapilian ang mahimong ipasa sa Fdupes aron ilista, papason ug pulihan ang mga file nga adunay mga hardlink sa mga duplicate.

Ang pagtandi magsugod sa han-ay:

gidak-on nga pagtandi > Partial nga MD5 Signature Comparison > Full MD5 Signature Comparison > Byte-to-Byte Comparison.

I-install ang fdupes sa usa ka Linux

Ang pag-instalar sa pinakabag-o nga bersyon sa fdupes (fdupes version 1.51) nga sayon sama sa pagpadagan sa pagsunod sa command sa Debian based system sama sa Ubuntu ug Linux Mint.

$ sudo apt-get install fdupes

Sa CentOS/RHEL ug Fedora based system, kinahanglan nimo nga i-on ang epel repository aron ma-install ang fdupes package.

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

Mubo nga sulat: Ang default package manager yum gipulihan sa dnf gikan sa Fedora 22 pataas…

Giunsa paggamit ang mando sa fdupes?

1. Alang sa katuyoan sa pagpasundayag, maghimo kita ug pipila ka duplicate nga mga file ubos sa usa ka direktoryo (ingon tecmint) sama sa:

$ 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

Human sa pagpadagan sa ibabaw nga sugo, atong pamatud-an nga ang mga duplicate nga mga file gihimo o wala gamit ang ls command.

$ 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

Ang script sa ibabaw naghimo ug 15 ka mga file nga mao ang tecmint1.txt, tecmint2.txt...tecmint15.txt ug ang matag file adunay parehas nga datos i.e.,

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

2. Karon pangitaa ang mga duplicate nga mga file sulod sa folder 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. Pangitaa ang mga duplicate nga balikbalik sa ilawom sa matag direktoryo lakip ang mga sub-direktoryo niini gamit ang -r nga kapilian.

Gipangita niini ang tanan nga mga file ug folder nga recursively, depende sa gidaghanon sa mga file ug folder nga magdugay aron ma-scan ang mga duplicate. Nianang panahona, ipakita kanimo ang kinatibuk-ang pag-uswag sa terminal, usa ka butang nga sama niini.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Tan-awa ang gidak-on sa mga duplicate nga makita sulod sa usa ka folder gamit ang -S nga opsyon.

$ 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. Imong makita ang gidak-on sa mga duplicate nga mga file alang sa matag direktoryo ug mga subdirektoryo nga masugatan sulod sa paggamit sa -S ug -r nga mga opsyon sa samang higayon, sama sa:

$ 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. Gawas sa pagpangita sa usa ka folder o sa tanan nga mga folder nga balikbalik, mahimo nimong pilion ang pagpili sa duha ka mga folder o tulo ka mga folder kung gikinahanglan. Wala pay labot mahimo nimong gamiton ang opsyon -S ug/o -r kung gikinahanglan.

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

7. Aron mapapas ang mga duplicate nga mga file samtang nagpreserbar sa usa ka kopya mahimo nimong gamiton ang opsyon nga '-d'. Ang dugang nga pag-amping kinahanglan nga himuon samtang gigamit kini nga kapilian kung dili nimo mawala ang kinahanglan nga mga file/data ug hunahunaa nga ang proseso dili na mabawi.

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

Mahimo nimong mamatikdan nga ang tanan nga mga duplicate gilista ug ikaw giaghat sa pagtangtang, sa usa-usa o sa piho nga range o tanan sa usa ka lakaw. Mahimo nimong pilion ang usa ka range sama sa ubos aron matangtang ang mga file nga file sa piho nga range.

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. Gikan sa safety point of view, mahimo nimong i-print ang output sa 'fdupes' nga i-file ug dayon susihon ang text file aron makadesisyon kung unsa nga file ang papason. Kini nga pagkunhod sa mga kahigayonan sa pagkuha sa imong file nga aksidenteng matangtang. Mahimo nimong buhaton:

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

Mubo nga sulat: Mahimo nimong ilisan ang '/home' sa imong gusto nga folder. Gamita usab ang opsyon nga '-r' ug '-S' kung gusto nimo pangitaon nga recursively ug Print Size, matag usa.

9. Mahimo nimong laktawan ang unang file gikan sa matag set sa mga posporo pinaagi sa paggamit sa opsyon nga '-f'.

Unang Listahan sa mga file sa direktoryo.

$ 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

ug dayon laktawan ang unang file gikan sa matag set sa mga posporo.

$ 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. Susiha ang na-install nga bersyon sa fdupes.

$ fdupes --version

fdupes 1.51

11. Kung kinahanglan nimo ang bisan unsang tabang sa fdupes mahimo nimong gamiton ang switch '-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

Kana alang sa tanan karon. Pahibaloa ko kung giunsa nimo pagpangita ug pagtangtang ang mga duplicate nga file hangtod karon sa Linux? ug isulti usab kanako ang imong opinyon bahin sa kini nga utility. Ibutang ang imong bililhon nga feedback sa seksyon sa komentaryo sa ubos ug ayaw kalimti nga i-like/ipaambit kami ug tabangi kami nga mokaylap.

Nagtrabaho ko sa lain nga utility nga gitawag og fslint para tangtangon ang mga duplicate nga file, ma-post sa dili madugay ug ganahan ka nga magbasa.