fdupes - E Command Line Tool fir Duplikatdateien op Linux ze fannen an ze läschen


Et ass eng allgemeng Fuerderung fir duplizéiert Dateie fir déi meescht Computer Benotzer ze fannen an z'ersetzen. Duplizéiert Dateien ze fannen an ze läschen ass eng ustrengend Aarbecht déi Zäit a Gedold erfuerdert. Duplizéiert Dateien ze fannen ka ganz einfach sinn wann Är Maschinn vum GNU/Linux ugedriwwe gëtt, dank dem 'fdupes' Utility.

Fdupes ass e Linux Utility geschriwwen vum Adrian Lopez an der C Programméiersprooch verëffentlecht ënner MIT Lizenz. D'Applikatioun ass fäeg duplizéiert Dateien an de bestëmmte Set vun Verzeichnisser an Ënnerverzeechnungen ze fannen. Fdupes erkennen Duplikaten andeems Dir MD5 Ënnerschrëft vu Dateien vergläicht, gefollegt vun engem Byte-zu-Byte Verglach. Vill Optioune kënne mat Fdupes weidergeleet ginn fir d'Dateien ze lëschten, ze läschen an ze ersetzen mat Hardlinks op Duplikaten.

De Verglach fänkt an der Reiefolleg un:

Gréisst Verglach> Deelweis MD5 Ënnerschrëft Verglach> Voll MD5 Ënnerschrëft Verglach> Byte-zu-Byte Verglach.

Installéiert fdupes op engem Linux

Installatioun vun der leschter Versioun vu fdupes (fdupes Versioun 1.51) sou einfach wéi de Kommando op Debian baséiert Systemer wéi Ubuntu a Linux Mint ze lafen.

$ sudo apt-get install fdupes

Op CentOS/RHEL a Fedora baséiert Systemer, musst Dir Epel Repository ausschalten fir fdupes Package z'installéieren.

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

Notiz: De Standard Package Manager yum gëtt duerch dnf vun Fedora 22 ersat ...

Wéi benotzen ech fdupes Kommando?

1. Fir Demonstratiounszwecker, loosst eis e puer Duplikatdateien ënner engem Verzeechnes erstellen (soen tecmint) einfach wéi:

$ 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

Nodeems Dir uewe Kommando ausgefouert hutt, loosst eis verifizéieren datt d'Duplikatedateien erstallt ginn oder net ls Kommando benotzen.

$ 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

Dat uewe genannte Skript erstellt 15 Dateien nämlech tecmint1.txt, tecmint2.txt ... tecmint15.txt an all Dateien enthalen déiselwecht Donnéeën dh,

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

2. Sich no Duplikatdateien am Dossier 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. Sich no Duplikate rekursiv ënner all Verzeichnis inklusiv seng Ënnerverzeechnunge mat der -r Optioun.

Et sicht rekursiv iwwer all Dateien an Dossier, ofhängeg vun der Unzuel vun de Fichieren an Ordner, et dauert e bëssen Zäit fir Duplikaten ze scannen. An där Tëschenzäit kritt Dir de Gesamt Fortschrëtt am Terminal presentéiert, sou eppes.

$ fdupes -r /home

Progress [37780/54747] 69%

4. Gesinn d'Gréisst vun Duplikate bannent engem Dossier fonnt mat der -S Optioun.

$ 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. Dir kënnt d'Gréisst vun Duplikatdateien fir all Verzeechnes an Ënnerverzeechnungen gesinn, déi an der selweschter Zäit vun den -S an -r Optiounen begéint sinn, wéi:

$ 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. Anescht wéi an engem Dossier oder all Ordner rekursiv ze sichen, kënnt Dir wielen an zwee Classeure oder dräi Classeure wéi néideg ze wielen. Net ze ernimmen Dir kënnt Optioun -S an/oder -r benotzen wann néideg.

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

7. Fir déi duplizéiert Dateien ze läschen, während Dir eng Kopie bewahrt, kënnt Dir d'Optioun '-d' benotzen. Extra suergfälteg sollt getraff ginn wann Dir dës Optioun benotzt, soss kënnt Dir um Enn déi néideg Dateien/Donnéeën verléieren a vergiesst datt de Prozess net erhuelbar ass.

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

Dir kënnt bemierken datt all Duplikate opgelëscht sinn an Dir sidd opgefuerdert ze läschen, entweder een nom aneren oder bestëmmte Beräich oder alles an engem Go. Dir kënnt e Sortiment auswielen wéi hei ënnen fir Dateie Dateie vu spezifesche Beräich ze läschen.

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. Aus Sécherheetssiicht kënnt Dir gären d'Ausgab vun 'fdupes' op Datei drécken an dann Textdatei kontrolléieren fir ze entscheeden wéi eng Datei ze läschen. Dëst reduzéiert d'Chancen datt Är Datei zoufälleg geläscht gëtt. Dir kënnt maachen:

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

Bemierkung: Dir kënnt '/home' duerch den gewënschten Dossier ersetzen. Benotzt och d'Optioun '-r' an '-S' wann Dir rekursiv an Dréckgréisst wëllt sichen, respektiv.

9. Dir kënnt déi éischt Datei aus all Set vu Matcher ofleeën andeems Dir d'Optioun '-f' benotzt.

Éischt Lëscht Dateie vum Verzeechnes.

$ 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

an dann déi éischt Datei aus all Set vun Mätscher ewech.

$ 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. Check installéiert Versioun vun fdupes.

$ fdupes --version

fdupes 1.51

11. Wann Dir Hëllef braucht op fdupes, kënnt Dir Schalter '-h' benotzen.

$ 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

Dat ass elo fir all. Loosst mech wëssen wéi Dir Duplikatedateien bis elo am Linux fonnt hutt a geläscht hutt? a sot mir och Är Meenung iwwer dëst Utility. Setzt Äre wäertvolle Feedback an der Kommentarsektioun hei drënner a vergiesst net eis ze liken/deelen an eis ze hëllefen ze verbreeden.

Ech schaffen un engem aneren Utility mam Numm fslint fir duplizéiert Dateien ze läschen, wäert geschwënn posten an Dir wäert gär liesen.