Fdupes: Unterschied zwischen den Versionen
K Textersetzung - „z. B. “ durch „beispielsweise “ |
|||
(80 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''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...''' | |||
=== 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 | |||
|} | |||
=== Argumente === | |||
=== Umgebung === | |||
=== Rückgabewert === | |||
= | == Anwendung == | ||
$ fdupes - | ; 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 <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 | |||
; 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 | |||
; 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. | |||
; Mit dem Parameter <tt>-d</tt> 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 <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 beispielsweise : 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 beispielsweise : 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 beispielsweise : auf mehreren Sampler-CD´s angeboten werden, kann man Hardlinks durchaus verwenden um Fesplattenplatz zu sparen. | |||
* Gleiches Gilt beispielsweise 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 === | |||
<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-Page | |||
=== Links === | |||
==== Projekt ==== | |||
==== Weblinks ==== | |||
# https://github.com/adrianlopezroche/fdupes | |||
# https://alternativeto.net/software/fdupes/ | |||
# https://krausens-online.de/fdupes-duplikate-finden/ | |||
[[Kategorie:Linux/Datei/Verwaltung]] | |||
[[Kategorie:Linux/Befehl]] | |||
{{DEFAULTSORT:fdupes}} | |||
</noinclude> |
Aktuelle Version vom 28. April 2025, 10:23 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 |
Argumente
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 beispielsweise : 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 beispielsweise : 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 beispielsweise : auf mehreren Sampler-CD´s angeboten werden, kann man Hardlinks durchaus verwenden um Fesplattenplatz zu sparen.
- Gleiches Gilt beispielsweise 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-Page
Links
Projekt
Weblinks
- https://github.com/adrianlopezroche/fdupes
- https://alternativeto.net/software/fdupes/
- https://krausens-online.de/fdupes-duplikate-finden/