fdupes - ein Befehlszeilentool zum Auffinden und Löschen doppelter Dateien unter Linux
Für die meisten Computerbenutzer ist es eine häufige Anforderung, doppelte Dateien zu finden und zu ersetzen. Das Auffinden und Entfernen doppelter Dateien ist eine mühsame Arbeit, die Zeit und Geduld erfordert. Das Auffinden doppelter Dateien kann sehr einfach sein, wenn Ihr Rechner mit GNU/Linux betrieben wird, dank des Dienstprogramms 'fdupes'.
Was ist fdupes?
Fdupes ist ein Linux-Dienstprogramm, das von Adrian Lopez in der Programmiersprache C geschrieben und unter der MIT-Lizenz veröffentlicht wurde. Die Anwendung ist in der Lage, doppelte Dateien in einer bestimmten Gruppe von Verzeichnissen und Unterverzeichnissen zu finden. Fdupes erkennt Duplikate, indem es die MD5-Signatur von Dateien vergleicht, gefolgt von einem Byte-zu-Byte-Vergleich. Mit Fdupes können viele Optionen übergeben werden, um die Dateien aufzulisten, zu löschen und durch Hardlinks zu Duplikaten zu ersetzen.
Der Vergleich beginnt in der Reihenfolge:
Größenvergleich > Partieller MD5-Signaturvergleich > Vollständiger MD5-Signaturvergleich > Byte-zu-Byte-Vergleich.
Installieren von fdupes unter Linux
Die Installation der neuesten Version von fdupes (fdupes Version 1.51) ist so einfach wie das Ausführen des folgenden Befehls auf Debian-basierten Systemen wie Ubuntu und Linux Mint.
$ sudo apt-get install fdupes
Auf CentOS/RHEL- und Fedora-basierten Systemen müssen Sie das epel-Repository aktivieren, um das fdupes-Paket zu installieren.
# yum install fdupes
dnf install fdupes [On Fedora 22 onwards]
Hinweis: Der Standard-Paketmanager yum wird ab Fedora 22 durch dnf ersetzt...
Wie verwende ich den Befehl fdupes?
1. Zu Demonstrationszwecken erstellen wir einige doppelte Dateien unter einem Verzeichnis (z. B. tecmint) einfach als:
$ 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
Nachdem wir den obigen Befehl ausgeführt haben, überprüfen wir, ob die doppelten Dateien erstellt wurden oder nicht, indem wir den Befehl ls verwenden.
$ 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
Das obige Skript erstellt 15 Dateien, nämlich tecmint1.txt, tecmint2.txt...tecmint15.txt und jede Datei enthält die gleichen Daten, d.h.
"I Love Tecmint. Tecmint is a very nice community of Linux Users."
2. Suchen Sie nun innerhalb des Ordners tecmint nach doppelten Dateien.
$ 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. Suchen Sie rekursiv unter jedem Verzeichnis, einschließlich seiner Unterverzeichnisse, mit der Option -r.
Es wird rekursiv über alle Dateien und Ordner gesucht, abhängig von der Anzahl der Dateien und Ordner dauert es einige Zeit, Duplikate zu scannen. In der Zwischenzeit wird Ihnen der Gesamtfortschritt im Terminal angezeigt, etwa so.
$ fdupes -r /home
Progress [37780/54747] 69%
4. Sehen Sie sich die Größe der Duplikate an, die in einem Ordner gefunden werden, indem Sie die Option -S verwenden.
$ 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. Sie können die Größe doppelter Dateien für jedes Verzeichnis und alle Unterverzeichnisse, die darin vorkommen, gleichzeitig mit den Optionen -S und -r sehen, wie folgt:
$ 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. Abgesehen von der rekursiven Suche in einem Ordner oder allen Ordnern können Sie je nach Bedarf in zwei Ordnern oder drei Ordnern wählen. Ganz zu schweigen davon, dass Sie bei Bedarf die Option -S und/oder -r verwenden können.
$ fdupes /home/avi/Desktop/ /home/avi/Templates/
7. Um die doppelten Dateien zu löschen, während eine Kopie erhalten bleibt, können Sie die Option '-d' verwenden. Bei der Verwendung dieser Option sollten Sie besonders vorsichtig sein, da Sie sonst möglicherweise die erforderlichen Dateien/Daten verlieren und beachten Sie, dass der Vorgang nicht wiederhergestellt werden kann.
$ 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]:
Möglicherweise stellen Sie fest, dass alle Duplikate aufgelistet sind und Sie aufgefordert werden, sie zu löschen, entweder einzeln oder in einem bestimmten Bereich oder alle auf einmal. Sie können einen Bereich wie den folgenden auswählen, um Dateien mit einem bestimmten Bereich zu 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 Sicherheitsgründen möchten Sie möglicherweise die Ausgabe von 'fdupes' in eine Datei drucken und dann die Textdatei überprüfen, um zu entscheiden, welche Datei gelöscht werden soll. Dies verringert die Wahrscheinlichkeit, dass Ihre Datei versehentlich gelöscht wird. Sie können Folgendes tun:
$ fdupes -Sr /home > /home/fdupes.txt
Hinweis: Sie können '/home' durch den gewünschten Ordner ersetzen. Verwenden Sie auch die Optionen '-r' und '-S', wenn Sie rekursiv bzw. Druckgröße suchen möchten.
9. Sie können die erste Datei aus jedem Satz von Übereinstimmungen weglassen, indem Sie die Option '-f' verwenden.
Zuerst Dateien des Verzeichnisses auflisten.
$ 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
und lassen Sie dann die erste Datei in jedem Satz von Übereinstimmungen weg.
$ 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. Überprüfen Sie die installierte Version von fdupes.
$ fdupes --version
fdupes 1.51
11. Wenn Sie Hilfe zu fdupes benötigen, können Sie den Schalter '-h' verwenden.
$ 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
Das ist jetzt für alle. Lassen Sie mich wissen, wie Sie bis jetzt doppelte Dateien unter Linux gefunden und gelöscht haben? Und teilen Sie mir auch Ihre Meinung zu diesem Dienstprogramm mit. Schreiben Sie Ihr wertvolles Feedback in den Kommentarbereich unten und vergessen Sie nicht, uns zu liken/teilen und uns zu helfen, uns zu verbreiten.
Ich arbeite an einem anderen Dienstprogramm namens fslint, um doppelte Dateien zu entfernen, werde bald posten und Sie werden es lieben zu lesen.
