Fdupes: Unterschied zwischen den Versionen
K Textersetzung - „Kategorie:Linux/Dateien“ durch „Kategorie:Linux/Datei“ |
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“ |
||
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{DISPLAYTITLE:fdupes}} | {{DISPLAYTITLE:fdupes}} | ||
'''fdupes''' - Identifizieren doppelt vorhandener Dateien | |||
== Beschreibung == | |||
; ''fdupes'' durchsucht Verzeichnisse und sucht Dateien mit gleichen Hash-Wert | |||
* diese werden bitweise miteinander verglichen | |||
= | == Installation == | ||
# '''apt install fdupes''' | |||
= | == Aufruf == | ||
$ fdupes [Optionen] VERZEICHNIS... | $ '''fdupes [Optionen] VERZEICHNIS...''' | ||
= | === Optionen === | ||
{| class="wikitable sortable options" | |||
|- | |||
! unix !! gnu !! Beschreibung | |||
|- | |||
| -r || --recurse || für jedes angegebene Verzeichnis folge den Unterverzeichnissen im Inneren angetroffen | |||
|- | |||
| -R || --recurse || für jedes nach dieser Option angegebene Verzeichnis folgen darin gefundene Unterverzeichnisse (beachten Sie das ':' at am Ende der Option, Manpage für weitere Details) | |||
|- | |||
| -s || --symlinks || folgen Symlinks | |||
|- | |||
| -H || --hardlinks || normalerweise, wenn zwei oder mehr Dateien auf dieselbe verweisen Plattenbereich werden sie als Nicht-Duplikate behandelt; Diese Option wird dieses Verhalten ändern | |||
|- | |||
| -G || --minsize=SIZE || berücksichtigt nur Dateien größer oder gleich SIZE in Bytes | |||
|- | |||
| -L || --maxsize=SIZE || berücksichtigt nur Dateien kleiner oder gleich SIZE in Bytes | |||
|- | |||
| -n || --noempty || schließt Dateien der Länge null von der Berücksichtigung aus | |||
|- | |||
| -A || --nohidden || schließt versteckte Dateien von der Betrachtung aus | |||
|- | |||
| -f || --omitfirst || lässt die erste Datei in jedem Satz von Übereinstimmungen aus | |||
|- | |||
|-1 || --sameline || listet jede Gruppe von Übereinstimmungen in einer einzigen Zeile auf | |||
|- | |||
| -S || --size || Größe der doppelten Dateien anzeigen | |||
|- | |||
| -t || --time || zeigt die Änderungszeit doppelter Dateien an | |||
|- | |||
| -m || --summarize || Duplikatinformationen zusammenfassen | |||
|- | |||
| -q || --quiet || Fortschrittsanzeige ausblenden | |||
|- | |||
| -d || --delete || fordert den Benutzer auf, Dateien aufzubewahren und alle zu löschen Andere; wichtig: unter besonderen Umständen, Daten können verloren gehen, wenn diese Option zusammen verwendet wird mit -s oder --symlinks oder bei Angabe von a bestimmtes Verzeichnis mehr als einmal; beziehen sich auf die fdupes-Dokumentation für zusätzliche Informationen | |||
|- | |||
| -P || --plain || with --delete, zeilenbasierte Eingabeaufforderung verwenden (wie bei älteren Versionen von fdupes) statt Bildschirmmodus-Schnittstelle | |||
|- | |||
| -N || --noprompt || zusammen mit --delete, bewahrt die erste Datei in jeden Satz Duplikate und löschen Sie den Rest ohne den Benutzer auffordern | |||
|- | |||
| -I || --Sofort || lösche Duplikate, wenn sie angetroffen werden, ohne Gruppieren in Sätze; impliziert --noprompt | |||
|- | |||
| -p || --permissions || berücksichtigt keine Dateien mit unterschiedlichen Besitzern/Gruppen oder Berechtigungsbits als Duplikate | |||
|- | |||
| -o || --order=BY || Auswahl der Sortierreihenfolge für die Ausgabe und das Löschen; nach Datei Änderungszeit (BY='time'; Standard), Status Zeit ändern (BY='ctime') oder Dateiname (BY='name') | |||
|- | |||
| -i || --Umkehren || der umgekehrten Reihenfolge beim Sortieren | |||
|- | |||
| -l || --log=LOGFILE || Löschoptionen für Protokolldateien in LOGFILE | |||
|- | |||
| -v || --version || fdupes-Version anzeigen | |||
|- | |||
| -h || --help || zeigt diese Hilfenachricht an | |||
|} | |||
=== Parameter === | |||
=== Umgebung === | |||
=== Rückgabewert === | |||
== Anwendung == | |||
; Duplikate finden | |||
$ fdupes /path/to/some/directory | $ fdupes /path/to/some/directory | ||
Dieser Befehl sucht nur im Verzeichnis | * Dieser Befehl sucht nur im Verzeichnis | ||
* das als Argument angegeben wurde, und druckt die Liste der doppelten Dateien aus (falls vorhanden). | |||
* Wenn Sie auch in Unterverzeichnisse suchen, müssen Sie die Option "-r" hinzufügen, die für "rekursiv" steht. | |||
Und was, wenn Sie die Größe von Dateien sehen möchten? | ; Und was, wenn Sie die Größe von Dateien sehen möchten? | ||
$ fdupes -S /path/to/some/directory | $ fdupes -S /path/to/some/directory | ||
Sie können mehr als ein Verzeichnis angeben: | ; Sie können mehr als ein Verzeichnis angeben: | ||
$ fdupes /path/to/first/directory /path/to/second/directory | $ fdupes /path/to/first/directory /path/to/second/directory | ||
Wenn Sie alle Duplikate löschen wollen | ; Wenn Sie alle Duplikate löschen wollen | ||
$ fdupes -d /path/to/directory | $ fdupes -d /path/to/directory | ||
Dadurch wird eine Kopie beibehalten und alles andere gelöscht. | ; Dadurch wird eine Kopie beibehalten und alles andere gelöscht. | ||
$ fdupes ./ | $ fdupes ./ | ||
./File1.txt./File1-Kopie1.txt./File1-Kopie2.txt ./File2.txt./File2-Kopie1.txt | ergibt folgendes Ergebnis: | ||
./File1.txt ./File1-Kopie1.txt ./File1-Kopie2.txt ./File2.txt ./File2-Kopie1.txt | |||
Mit dem Parameter <tt>-r</tt> (recursive in alle ab Suchpfand vorhandenen Unterverzeichnissen) ergibt sich folgende Ausgabe. | ; Mit dem Parameter <tt>-r</tt> (recursive in alle ab Suchpfand vorhandenen Unterverzeichnissen) ergibt sich folgende Ausgabe. | ||
$ fdupes ./ -r ./File1.txt ./File1-Kopie1.txt ./File1-Kopie2.txt ./anderer_ort/File1-Kopie2.txt ./anderer_ort/File1-Kopie1.txt ./File2.txt ./File2-Kopie1.txt ./anderer_ort/File2-Kopie1.txt | $ fdupes ./ -r ./File1.txt ./File1-Kopie1.txt ./File1-Kopie2.txt ./anderer_ort/File1-Kopie2.txt ./anderer_ort/File1-Kopie1.txt ./File2.txt ./File2-Kopie1.txt ./anderer_ort/File2-Kopie1.txt | ||
; Mit dem zusätzlichen Parameter <tt>-f</tt> (weglassen des ersten Treffers) ergibt sich folgende Ausgabe. | |||
Mit dem zusätzlichen Parameter <tt>-f</tt> (weglassen des ersten Treffers) ergibt sich folgende Ausgabe. | |||
$ fdupes -r -f ./File1-Kopie1.txt ./File1-Kopie2.txt ./anderer_ort/File1-Kopie2.txt ./anderer_ort/File1-Kopie1.txt ./File2-Kopie1.txt ./anderer_ort/File2-Kopie1.txt | $ fdupes -r -f ./File1-Kopie1.txt ./File1-Kopie2.txt ./anderer_ort/File1-Kopie2.txt ./anderer_ort/File1-Kopie1.txt ./File2-Kopie1.txt ./anderer_ort/File2-Kopie1.txt | ||
; Mit dem Parameter <tt>-m</tt> (Zusammenzählen der Dateigrößen) wird ausgegeben, wieviel Platz durch doppelte Dateien belegt werden. | |||
Mit dem Parameter <tt>-m</tt> (Zusammenzählen der Dateigrößen) wird ausgegeben, wieviel Platz durch doppelte Dateien belegt werden. | |||
$ fdupes ./ -r -m 6 duplicate files (in 2 sets), occupying 130 bytes. | $ fdupes ./ -r -m 6 duplicate files (in 2 sets), occupying 130 bytes. | ||
; Mit dem Parameter <tt>-d</tt> werden doppelte Dateien '''mit Rückfrage''' gelöscht (Parameter können auch einfach aneiander geschrieben werden). | |||
Mit dem Parameter <tt>-d</tt> werden doppelte Dateien '''mit Rückfrage''' gelöscht (Parameter können auch einfach aneiander geschrieben werden). | |||
$ fdupes ./ -rd | $ fdupes ./ -rd | ||
[1] ./File1.txt [2] ./File1-Kopie1.txt [3] ./File1-Kopie2.txt [4] ./anderer_ort/File1-Kopie2.txt [5] ./anderer_ort/File1-Kopie1.txt Set 2 of 2, preserve files [1 - 5, all]: | |||
Man kann nun auswählen, welche Datei man behalten möchte (1-5). | Man kann nun auswählen, welche Datei man behalten möchte (1-5). | ||
Zeile 70: | Zeile 118: | ||
Ein Löschen ohne Nachfrage erfolgt mit dem Parameter <tt>-N</tt>. Mit Verwendung dieses Parameters <tt>-N</tt> wird immer der erste Treffer erhalten und alle anderen Dateien gelöscht.'''ACHTUNG:''' Die erste Datei, welche <tt>fdupes</tt> annimmt, ist nicht immer auch die Datei, welche man erhalten möchte. | Ein Löschen ohne Nachfrage erfolgt mit dem Parameter <tt>-N</tt>. Mit Verwendung dieses Parameters <tt>-N</tt> wird immer der erste Treffer erhalten und alle anderen Dateien gelöscht.'''ACHTUNG:''' Die erste Datei, welche <tt>fdupes</tt> annimmt, ist nicht immer auch die Datei, welche man erhalten möchte. | ||
Wesentlich „ungefährlicher“ ist da die Verwendung des Parameters <tt>-L</tt> (erstellt Hardlinks anstatt zu löschen).''Dieser Parameter ist z.B.: in fdupes 1.50-PR2 vorhanden.'' | ; Wesentlich „ungefährlicher“ ist da die Verwendung des Parameters <tt>-L</tt> (erstellt Hardlinks anstatt zu löschen). | ||
''Dieser Parameter ist z. B. : in fdupes 1.50-PR2 vorhanden.'' | |||
$ fdupes ./ -rL [+] ./anderer_ort/File2-Kopie1.txt [h] ./File2-Kopie1.txt [h] ./File2.txt [+] ./File1-Kopie2.txt [h] ./anderer_ort/File1-Kopie2.txt [h] ./anderer_ort/File1-Kopie1.txt [h] ./File1.txt [h] ./File1-Kopie1.txt | $ fdupes ./ -rL [+] ./anderer_ort/File2-Kopie1.txt [h] ./File2-Kopie1.txt [h] ./File2.txt [+] ./File1-Kopie2.txt [h] ./anderer_ort/File1-Kopie2.txt [h] ./anderer_ort/File1-Kopie1.txt [h] ./File1.txt [h] ./File1-Kopie1.txt | ||
Das „[L]“ gibt an, dass die Datei nun durch Hardlinks verbunden wurden. | Das „[L]“ gibt an, dass die Datei nun durch Hardlinks verbunden wurden. | ||
Zeile 79: | Zeile 126: | ||
$ ls -liR .: insgesamt 24 83 drwxr-xr-x 2 root root 4096 12. Okt 10:38 anderer_ort 96 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt 85 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt 95 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1.txt 86 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt 87 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2.txt ./anderer_ort: insgesamt 12 79 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt 77 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt 78 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt | $ ls -liR .: insgesamt 24 83 drwxr-xr-x 2 root root 4096 12. Okt 10:38 anderer_ort 96 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt 85 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt 95 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1.txt 86 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt 87 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2.txt ./anderer_ort: insgesamt 12 79 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt 77 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt 78 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt | ||
$ ls -liR.:insgesamt 2483 drwxr-xr-x 2 root root 4096 12. Okt 10:38 anderer_ort96 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt85 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt95 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1.txt86 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt87 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2.txt ./anderer_ort:insgesamt 1279 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt77 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt78 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt | $ ls -liR . | ||
:insgesamt 2483 | |||
drwxr-xr-x 2 root root 4096 12. Okt 10:38 anderer_ort96 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt85 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt95 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1.txt86 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt87 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2.txt ./anderer_ort:insgesamt 1279 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt77 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt78 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt | |||
''(Nach fdupes ./ -rL)'' | ''(Nach fdupes ./ -rL)'' | ||
Zeile 88: | Zeile 137: | ||
Während vorher alle Dateien eine eigene Inode hatten (erste Spalte), haben nun mehrere Dateien die gleiche Inode. | Während vorher alle Dateien eine eigene Inode hatten (erste Spalte), haben nun mehrere Dateien die gleiche Inode. | ||
* Sie verweisen demnach alle auf die gleiche Datei.Eine Datei mit mehreren Hardlinks existiert solange mindestens ein Verweis auf diese Datei vorhanden ist. | * Sie verweisen demnach alle auf die gleiche Datei.Eine Datei mit mehreren Hardlinks existiert solange mindestens ein Verweis auf diese Datei vorhanden ist. | ||
* Es ist demnach egal welche Datei man löscht; es gibt keine „Haupt“-Datei wie z.B.: bei symbolischen Links | * Es ist demnach egal welche Datei man löscht; es gibt keine „Haupt“-Datei wie z. B. : bei symbolischen Links. | ||
= Anmerkungen = | === Anmerkungen === | ||
Sofern nicht -1 oder --sameline angegeben ist, werden doppelte Dateien aufgelistet in Gruppen zusammengefasst, wobei jede Datei in einer eigenen Zeile angezeigt wird. | ; Sofern nicht -1 oder --sameline angegeben ist, werden doppelte Dateien aufgelistet in Gruppen zusammengefasst, wobei jede Datei in einer eigenen Zeile angezeigt wird. | ||
* Der Gruppen werden dann durch Leerzeilen voneinander getrennt. | * Der Gruppen werden dann durch Leerzeilen voneinander getrennt. | ||
* Wenn -1 oder --sameline angegeben ist, werden Leerzeichen und umgekehrte Schrägstriche (\) in einem Dateinamen erscheinen, wird ein umgekehrter Schrägstrich vorangestellt. | * Wenn -1 oder --sameline angegeben ist, werden Leerzeichen und umgekehrte Schrägstriche (\) in einem Dateinamen erscheinen, wird ein umgekehrter Schrägstrich vorangestellt. | ||
* Für Beispiel wird "mit Leerzeichen" zu "mit\ Leerzeichen". | * Für Beispiel wird "mit Leerzeichen" zu "mit\ Leerzeichen". | ||
Bei Verwendung von -d oder --delete ist darauf zu achten, dass Sie sich gegen versehentlicher Datenverlust. | ; Bei Verwendung von -d oder --delete ist darauf zu achten, dass Sie sich gegen versehentlicher Datenverlust. | ||
* Während keine Informationen sofort verfügbar sind verloren, die Verwendung dieser Option zusammen mit -s oder --symlink kann dazu führen, dass zu verwirrenden Informationen, die dem Benutzer angezeigt werden, wenn er dazu aufgefordert wird um Dateien aufzubewahren. | * Während keine Informationen sofort verfügbar sind verloren, die Verwendung dieser Option zusammen mit -s oder --symlink kann dazu führen, dass zu verwirrenden Informationen, die dem Benutzer angezeigt werden, wenn er dazu aufgefordert wird um Dateien aufzubewahren. | ||
* Insbesondere könnte ein Benutzer versehentlich Behalten Sie einen symbolischen Link bei, während Sie die Datei löschen, auf die er verweist. | * Insbesondere könnte ein Benutzer versehentlich Behalten Sie einen symbolischen Link bei, während Sie die Datei löschen, auf die er verweist. | ||
Zeile 108: | Zeile 151: | ||
* Alle Dateien in diesem Verzeichnis werden als ihre eigenen aufgelistet Duplikate, die zu Datenverlust führen, sollte ein Benutzer eine Datei aufbewahren ohne sein "Duplikat" (die Datei selbst!). | * Alle Dateien in diesem Verzeichnis werden als ihre eigenen aufgelistet Duplikate, die zu Datenverlust führen, sollte ein Benutzer eine Datei aufbewahren ohne sein "Duplikat" (die Datei selbst!). | ||
== Gefahr von Hardlinks == | === Gefahr von Hardlinks === | ||
* Hardlinks verweisen immer auf die gleiche Datei. | * Hardlinks verweisen immer auf die gleiche Datei. | ||
* Es ist somit egal von welchen Verzeichnis man auf die Datei zugreift, Änderungen an der Datei sind immer für alle Links gültig. | * Es ist somit egal von welchen Verzeichnis man auf die Datei zugreift, Änderungen an der Datei sind immer für alle Links gültig. | ||
* Man sollte vorsichtig sein, wann man Hardlinks einsetzt. | * Man sollte vorsichtig sein, wann man Hardlinks einsetzt. | ||
* Wenn man eine Musiksammlung hat, in denen gleiche Musikstücke (gleich in den Bit!) mehrfach vorhanden sind weil diese z.B.: auf mehreren Sampler-CD´s angeboten werden, kann man Hardlinks durchaus verwenden um Fesplattenplatz zu sparen. | * Wenn man eine Musiksammlung hat, in denen gleiche Musikstücke (gleich in den Bit!) mehrfach vorhanden sind weil diese z. B. : auf mehreren Sampler-CD´s angeboten werden, kann man Hardlinks durchaus verwenden um Fesplattenplatz zu sparen. | ||
* Gleiches Gilt z.B. | * Gleiches Gilt z. B. auch für Fotosammlungen. | ||
* In beiden Fällen würde man ein Musikfile oder Bild nicht ändern oder, wenn man es ändert, unter einen neuen Namen abspeichern. | * In beiden Fällen würde man ein Musikfile oder Bild nicht ändern oder, wenn man es ändert, unter einen neuen Namen abspeichern. | ||
* Problematisch wird es, wenn man mehrere Stände von Projekt-Dateien abspeichert, um eine Histoire eines Projektes zu haben. | * Problematisch wird es, wenn man mehrere Stände von Projekt-Dateien abspeichert, um eine Histoire eines Projektes zu haben. | ||
Zeile 120: | Zeile 163: | ||
* Somit wäre zuvor abgespeicherten Projekt-Stände verfälscht, da sie nicht dem ursprünglichen Stand entsprechen. | * Somit wäre zuvor abgespeicherten Projekt-Stände verfälscht, da sie nicht dem ursprünglichen Stand entsprechen. | ||
[[ | == Konfiguration == | ||
=== Dateien === | |||
<noinclude> | |||
== Anhang == | |||
=== Siehe auch === | |||
{{Special:PrefixIndex/{{BASEPAGENAME}}}} | |||
---- | |||
* [[Linux/Dateinamen_bereinigen | detox]] - Safely removes spaces and strange characters from filenames | |||
* [[fslint]] - Utility to find redundant disk usage and duplicate files | |||
* [[dupemgr]] - is a command-line utility to identify duplicates of files | |||
* [[dupfinder]] - searches for duplicate files | |||
* [[fastdup]] - Tool to find copies of the same file within directory tree(s) | |||
* [[finddupe]] - A command line C program to catalog very large archives | |||
* [[freedup]] - allows you to reclaim space on your drive | |||
= | ==== Dokumentation ==== | ||
===== RFC ===== | |||
===== Man-Page ===== | |||
===== Info-Pages ===== | |||
==== Links ==== | |||
===== Projekt ===== | |||
= | ===== Weblinks ===== | ||
== | |||
== | |||
# https://github.com/adrianlopezroche/fdupes | # https://github.com/adrianlopezroche/fdupes | ||
# https://alternativeto.net/software/fdupes/ | # https://alternativeto.net/software/fdupes/ | ||
# https://krausens-online.de/fdupes-duplikate-finden/ | # https://krausens-online.de/fdupes-duplikate-finden/ | ||
[[Kategorie:Linux/Datei]] | [[Kategorie:Linux/Datei/Verwaltung]] | ||
[[Kategorie:Linux/Befehl]] | |||
{{DEFAULTSORT:fdupes}} | {{DEFAULTSORT:fdupes}} | ||
</noinclude> |
Aktuelle Version vom 12. November 2024, 18:36 Uhr
fdupes - Identifizieren doppelt vorhandener Dateien
Beschreibung
- fdupes durchsucht Verzeichnisse und sucht Dateien mit gleichen Hash-Wert
- diese werden bitweise miteinander verglichen
Installation
# apt install fdupes
Aufruf
$ fdupes [Optionen] VERZEICHNIS...
Optionen
unix | gnu | Beschreibung |
---|---|---|
-r | --recurse | für jedes angegebene Verzeichnis folge den Unterverzeichnissen im Inneren angetroffen |
-R | --recurse | für jedes nach dieser Option angegebene Verzeichnis folgen darin gefundene Unterverzeichnisse (beachten Sie das ':' at am Ende der Option, Manpage für weitere Details) |
-s | --symlinks | folgen Symlinks |
-H | --hardlinks | normalerweise, wenn zwei oder mehr Dateien auf dieselbe verweisen Plattenbereich werden sie als Nicht-Duplikate behandelt; Diese Option wird dieses Verhalten ändern |
-G | --minsize=SIZE | berücksichtigt nur Dateien größer oder gleich SIZE in Bytes |
-L | --maxsize=SIZE | berücksichtigt nur Dateien kleiner oder gleich SIZE in Bytes |
-n | --noempty | schließt Dateien der Länge null von der Berücksichtigung aus |
-A | --nohidden | schließt versteckte Dateien von der Betrachtung aus |
-f | --omitfirst | lässt die erste Datei in jedem Satz von Übereinstimmungen aus |
-S | --size | Größe der doppelten Dateien anzeigen |
-t | --time | zeigt die Änderungszeit doppelter Dateien an |
-m | --summarize | Duplikatinformationen zusammenfassen |
-q | --quiet | Fortschrittsanzeige ausblenden |
-d | --delete | fordert den Benutzer auf, Dateien aufzubewahren und alle zu löschen Andere; wichtig: unter besonderen Umständen, Daten können verloren gehen, wenn diese Option zusammen verwendet wird mit -s oder --symlinks oder bei Angabe von a bestimmtes Verzeichnis mehr als einmal; beziehen sich auf die fdupes-Dokumentation für zusätzliche Informationen |
-P | --plain | with --delete, zeilenbasierte Eingabeaufforderung verwenden (wie bei älteren Versionen von fdupes) statt Bildschirmmodus-Schnittstelle |
-N | --noprompt | zusammen mit --delete, bewahrt die erste Datei in jeden Satz Duplikate und löschen Sie den Rest ohne den Benutzer auffordern |
-I | --Sofort | lösche Duplikate, wenn sie angetroffen werden, ohne Gruppieren in Sätze; impliziert --noprompt |
-p | --permissions | berücksichtigt keine Dateien mit unterschiedlichen Besitzern/Gruppen oder Berechtigungsbits als Duplikate |
-o | --order=BY | Auswahl der Sortierreihenfolge für die Ausgabe und das Löschen; nach Datei Änderungszeit (BY='time'; Standard), Status Zeit ändern (BY='ctime') oder Dateiname (BY='name') |
-i | --Umkehren | der umgekehrten Reihenfolge beim Sortieren |
-l | --log=LOGFILE | Löschoptionen für Protokolldateien in LOGFILE |
-v | --version | fdupes-Version anzeigen |
-h | --help | zeigt diese Hilfenachricht an |
Parameter
Umgebung
Rückgabewert
Anwendung
- Duplikate finden
$ fdupes /path/to/some/directory
- Dieser Befehl sucht nur im Verzeichnis
- das als Argument angegeben wurde, und druckt die Liste der doppelten Dateien aus (falls vorhanden).
- Wenn Sie auch in Unterverzeichnisse suchen, müssen Sie die Option "-r" hinzufügen, die für "rekursiv" steht.
- Und was, wenn Sie die Größe von Dateien sehen möchten?
$ fdupes -S /path/to/some/directory
- Sie können mehr als ein Verzeichnis angeben
$ fdupes /path/to/first/directory /path/to/second/directory
- Wenn Sie alle Duplikate löschen wollen
$ fdupes -d /path/to/directory
- Dadurch wird eine Kopie beibehalten und alles andere gelöscht.
$ fdupes ./
ergibt folgendes Ergebnis:
./File1.txt ./File1-Kopie1.txt ./File1-Kopie2.txt ./File2.txt ./File2-Kopie1.txt
- Mit dem Parameter -r (recursive in alle ab Suchpfand vorhandenen Unterverzeichnissen) ergibt sich folgende Ausgabe.
$ fdupes ./ -r ./File1.txt ./File1-Kopie1.txt ./File1-Kopie2.txt ./anderer_ort/File1-Kopie2.txt ./anderer_ort/File1-Kopie1.txt ./File2.txt ./File2-Kopie1.txt ./anderer_ort/File2-Kopie1.txt
- Mit dem zusätzlichen Parameter -f (weglassen des ersten Treffers) ergibt sich folgende Ausgabe.
$ fdupes -r -f ./File1-Kopie1.txt ./File1-Kopie2.txt ./anderer_ort/File1-Kopie2.txt ./anderer_ort/File1-Kopie1.txt ./File2-Kopie1.txt ./anderer_ort/File2-Kopie1.txt
- Mit dem Parameter -m (Zusammenzählen der Dateigrößen) wird ausgegeben, wieviel Platz durch doppelte Dateien belegt werden.
$ fdupes ./ -r -m 6 duplicate files (in 2 sets), occupying 130 bytes.
- Mit dem Parameter -d werden doppelte Dateien mit Rückfrage gelöscht (Parameter können auch einfach aneiander geschrieben werden).
$ fdupes ./ -rd [1] ./File1.txt [2] ./File1-Kopie1.txt [3] ./File1-Kopie2.txt [4] ./anderer_ort/File1-Kopie2.txt [5] ./anderer_ort/File1-Kopie1.txt Set 2 of 2, preserve files [1 - 5, all]:
Man kann nun auswählen, welche Datei man behalten möchte (1-5).
- Alle anderen Files werden gelöscht.
- Mit der Angabe von „all“ werden alle Dateien behalten.In diesem Fall wählen wir die 1. Datei aus (Eingabe: 1)Set 1 of 1, preserve files [1 - 5, all]: 1 [+] ./File1.txt [-] ./File1-Kopie1.txt [-] ./File1-Kopie2.txt [-] ./anderer_ort/File1-Kopie2.txt [-] ./anderer_ort/File1-Kopie1.txt
Set 1 of 1, preserve files [1 - 5, all]: 1 [+] ./File1.txt[-] ./File1-Kopie1.txt[-] ./File1-Kopie2.txt[-] ./anderer_ort/File1-Kopie2.txt[-] ./anderer_ort/File1-Kopie1.txt
Die Datei mit dem „[+]“ wird behalten, alle anderen Dateien ( [-] ) werden glöscht.Diese Frage kommt bei jeden Treffer von doppelt vorhandenen Dateien.
Ein Löschen ohne Nachfrage erfolgt mit dem Parameter -N. Mit Verwendung dieses Parameters -N wird immer der erste Treffer erhalten und alle anderen Dateien gelöscht.ACHTUNG: Die erste Datei, welche fdupes annimmt, ist nicht immer auch die Datei, welche man erhalten möchte.
- Wesentlich „ungefährlicher“ ist da die Verwendung des Parameters -L (erstellt Hardlinks anstatt zu löschen).
Dieser Parameter ist z. B. : in fdupes 1.50-PR2 vorhanden.
$ fdupes ./ -rL [+] ./anderer_ort/File2-Kopie1.txt [h] ./File2-Kopie1.txt [h] ./File2.txt [+] ./File1-Kopie2.txt [h] ./anderer_ort/File1-Kopie2.txt [h] ./anderer_ort/File1-Kopie1.txt [h] ./File1.txt [h] ./File1-Kopie1.txt
Das „[L]“ gibt an, dass die Datei nun durch Hardlinks verbunden wurden.
- Dadurch ist die Datei noch in allen Verzeichnissen erhalten, belegt aber nur einmal den Speicherplatz dafür.Man erkennt das an den Inodes der Dateien.(Vor fdupes ./ -rL)
$ ls -liR .: insgesamt 24 83 drwxr-xr-x 2 root root 4096 12. Okt 10:38 anderer_ort 96 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt 85 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt 95 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1.txt 86 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt 87 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2.txt ./anderer_ort: insgesamt 12 79 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt 77 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt 78 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt
$ ls -liR . :insgesamt 2483 drwxr-xr-x 2 root root 4096 12. Okt 10:38 anderer_ort96 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt85 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt95 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1.txt86 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt87 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2.txt ./anderer_ort:insgesamt 1279 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie1.txt77 -rw-r--r-- 1 root root 20 12. Okt 10:38 File1-Kopie2.txt78 -rw-r--r-- 1 root root 25 12. Okt 10:38 File2-Kopie1.txt
(Nach fdupes ./ -rL)
$ ls -liR .: insgesamt 24 83 drwxr-xr-x 2 root root 4096 12. Okt 10:39 anderer_ort 85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie1.txt 85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie2.txt 85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1.txt 78 -rw-r--r-- 3 root root 25 12. Okt 10:38 File2-Kopie1.txt 78 -rw-r--r-- 3 root root 25 12. Okt 10:38 File2.txt ./anderer_ort: insgesamt 12 85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie1.txt 85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie2.txt 78 -rw-r--r-- 3 root root 25 12. Okt 10:38 File2-Kopie1.txt
$ ls -liR.:insgesamt 2483 drwxr-xr-x 2 root root 4096 12. Okt 10:39 anderer_ort85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie1.txt85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie2.txt85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1.txt78 -rw-r--r-- 3 root root 25 12. Okt 10:38 File2-Kopie1.txt78 -rw-r--r-- 3 root root 25 12. Okt 10:38 File2.txt ./anderer_ort:insgesamt 1285 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie1.txt85 -rw-r--r-- 5 root root 20 12. Okt 10:38 File1-Kopie2.txt78 -rw-r--r-- 3 root root 25 12. Okt 10:38 File2-Kopie1.txt
Während vorher alle Dateien eine eigene Inode hatten (erste Spalte), haben nun mehrere Dateien die gleiche Inode.
- Sie verweisen demnach alle auf die gleiche Datei.Eine Datei mit mehreren Hardlinks existiert solange mindestens ein Verweis auf diese Datei vorhanden ist.
- Es ist demnach egal welche Datei man löscht; es gibt keine „Haupt“-Datei wie z. B. : bei symbolischen Links.
Anmerkungen
- Sofern nicht -1 oder --sameline angegeben ist, werden doppelte Dateien aufgelistet in Gruppen zusammengefasst, wobei jede Datei in einer eigenen Zeile angezeigt wird.
- Der Gruppen werden dann durch Leerzeilen voneinander getrennt.
- Wenn -1 oder --sameline angegeben ist, werden Leerzeichen und umgekehrte Schrägstriche (\) in einem Dateinamen erscheinen, wird ein umgekehrter Schrägstrich vorangestellt.
- Für Beispiel wird "mit Leerzeichen" zu "mit\ Leerzeichen".
- Bei Verwendung von -d oder --delete ist darauf zu achten, dass Sie sich gegen versehentlicher Datenverlust.
- Während keine Informationen sofort verfügbar sind verloren, die Verwendung dieser Option zusammen mit -s oder --symlink kann dazu führen, dass zu verwirrenden Informationen, die dem Benutzer angezeigt werden, wenn er dazu aufgefordert wird um Dateien aufzubewahren.
- Insbesondere könnte ein Benutzer versehentlich Behalten Sie einen symbolischen Link bei, während Sie die Datei löschen, auf die er verweist.
- Ein ähnliches Problem tritt auf, wenn ein bestimmtes Verzeichnis mehr als . angegeben wird Einmal.
- Alle Dateien in diesem Verzeichnis werden als ihre eigenen aufgelistet Duplikate, die zu Datenverlust führen, sollte ein Benutzer eine Datei aufbewahren ohne sein "Duplikat" (die Datei selbst!).
Gefahr von Hardlinks
- Hardlinks verweisen immer auf die gleiche Datei.
- Es ist somit egal von welchen Verzeichnis man auf die Datei zugreift, Änderungen an der Datei sind immer für alle Links gültig.
- Man sollte vorsichtig sein, wann man Hardlinks einsetzt.
- Wenn man eine Musiksammlung hat, in denen gleiche Musikstücke (gleich in den Bit!) mehrfach vorhanden sind weil diese z. B. : auf mehreren Sampler-CD´s angeboten werden, kann man Hardlinks durchaus verwenden um Fesplattenplatz zu sparen.
- Gleiches Gilt z. B. auch für Fotosammlungen.
- In beiden Fällen würde man ein Musikfile oder Bild nicht ändern oder, wenn man es ändert, unter einen neuen Namen abspeichern.
- Problematisch wird es, wenn man mehrere Stände von Projekt-Dateien abspeichert, um eine Histoire eines Projektes zu haben.
- Zwar würden auch hier alle doppelten Dateien verlinkt, aber es kann vorkammen, dass man eine solche Datei in einer aktuellen Projekt-Version ändert.
- In diesen Fall würde diese Datei aber auch in allen vorherig abgespeichterten Versionen geändert.
- Somit wäre zuvor abgespeicherten Projekt-Stände verfälscht, da sie nicht dem ursprünglichen Stand entsprechen.
Konfiguration
Dateien
Anhang
Siehe auch
- detox - Safely removes spaces and strange characters from filenames
- fslint - Utility to find redundant disk usage and duplicate files
- dupemgr - is a command-line utility to identify duplicates of files
- dupfinder - searches for duplicate files
- fastdup - Tool to find copies of the same file within directory tree(s)
- finddupe - A command line C program to catalog very large archives
- freedup - allows you to reclaim space on your drive
Dokumentation
RFC
Man-Page
Info-Pages
Links
Projekt
Weblinks
- https://github.com/adrianlopezroche/fdupes
- https://alternativeto.net/software/fdupes/
- https://krausens-online.de/fdupes-duplikate-finden/