Zum Inhalt springen

Fdupes: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „'''fdupes''' ist ein Programm zum Identifizieren doppelt vorhandener Dateien im der angegeben Verzeichnis Verwendung --------------------------------------…“
 
K Textersetzung - „z. B. “ durch „beispielsweise “
 
(83 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''fdupes''' ist ein Programm zum Identifizieren doppelt vorhandener Dateien im der angegeben Verzeichnis
{{DISPLAYTITLE:fdupes}}
'''fdupes''' - Identifizieren doppelt vorhandener Dateien


== Beschreibung ==
; ''fdupes'' durchsucht Verzeichnisse und sucht Dateien mit gleichen Hash-Wert
* diese werden bitweise miteinander verglichen


Verwendung
== Installation ==
-------------------------------------------------- ------------------
  # '''apt install fdupes'''
  Verwendung: fdupes [Optionen] VERZEICHNIS...


  -r --recurse für jedes angegebene Verzeichnis folge den Unterverzeichnissen
== Aufruf ==
                  im Inneren angetroffen
  $ '''fdupes [Optionen] VERZEICHNIS...'''
  -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;  Dies
                  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


Sofern nicht -1 oder --sameline angegeben ist, werden doppelte Dateien aufgelistet
=== Optionen ===
in Gruppen zusammengefasst, wobei jede Datei in einer eigenen Zeile angezeigt wird.  Der
{| class="wikitable sortable options"
Gruppen werden dann durch Leerzeilen voneinander getrennt.
|-
! 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
|}


Wenn -1 oder --sameline angegeben ist, werden Leerzeichen und umgekehrte Schrägstriche (\)
=== Argumente ===
in einem Dateinamen erscheinen, wird ein umgekehrter Schrägstrich vorangestellt.  Für
=== Umgebung ===
Beispiel wird "mit Leerzeichen" zu "mit\ Leerzeichen".
=== Rückgabewert ===


  Bei Verwendung von -d oder --delete ist darauf zu achten, dass Sie sich gegen
== Anwendung ==
versehentlicher Datenverlust. Während keine Informationen sofort verfügbar sind
; Duplikate finden
verloren, die Verwendung dieser Option zusammen mit -s oder --symlink kann dazu führen, dass  
$ fdupes /path/to/some/directory
zu verwirrenden Informationen, die dem Benutzer angezeigt werden, wenn er dazu aufgefordert wird
 
um Dateien aufzubewahren. Insbesondere könnte ein Benutzer versehentlich
* Dieser Befehl sucht nur im Verzeichnis
Behalten Sie einen symbolischen Link bei, während Sie die Datei löschen, auf die er verweist. Ein ähnliches
* das als Argument angegeben wurde, und druckt die Liste der doppelten Dateien aus (falls vorhanden).
Problem tritt auf, wenn ein bestimmtes Verzeichnis mehr als . angegeben wird  
* Wenn Sie auch in Unterverzeichnisse suchen, müssen Sie die Option "-r" hinzufügen, die für "rekursiv" steht.
Einmal. Alle Dateien in diesem Verzeichnis werden als ihre eigenen aufgelistet
 
Duplikate, die zu Datenverlust führen, sollte ein Benutzer eine Datei aufbewahren  
; Und was, wenn Sie die Größe von Dateien sehen möchten?
ohne sein "Duplikat" (die Datei selbst!).
$ 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

  1. https://github.com/adrianlopezroche/fdupes
  2. https://alternativeto.net/software/fdupes/
  3. https://krausens-online.de/fdupes-duplikate-finden/