Mit Fdupes Dubletten aufspüren

Aus LinuxUser 06/2023

Mit Fdupes Dubletten aufspüren

© Lars Christenen / 123RF.com

Doppelt gemoppelt

Das Kommandozeilentool Fdupes hilft Ihnen dabei, doppelte Ordner und Verzeichnisse zu finden.

README

Das Kommandozeilenprogramm Fdupes dient dazu, Datei-Dubletten auszumachen und zu löschen. Darüber hinaus bietet die Software das Umwandeln in Hard- oder Softlinks an.

Festplatten besitzen die unangenehme Eigenschaft, sich schneller zu füllen als gedacht. Dabei liegt nicht immer sofort auf der Hand, warum. Der Ordnungsfaktor spielt in diesem Kontext eine nicht zu unterschätzende Rolle. Unaufgeräumte, schlecht organisierte Festplatten laufen gemeinhin schneller voll, als gut organisierte. Da das Leben aber aus einer Mischung aus Ordnung und Chaos besteht, betrifft das Problem vermutlich die meisten von uns.

Für den unerwartet hohen Füllstand von Festplatten zeichnen häufig mehrfach vorhandene Dateien verantwortlich. Prädestiniert dafür sind Fotos, Musik oder Videos, die schnell mehrere GByte belegen und sich oft nur schwer finden lassen. Um solche Dubletten aufzuspüren und zu entfernen, gibt es unter Linux mehrere grafische Anwendungen sowie einige weitere für die Kommandozeile.

GUI oder CLI?

Bekannte Tools mit grafischer Oberfläche für die Aufräumarbeit sind Fslint und Dupeguru. In diesem Artikel beschäftigen wir uns allerdings mit dem im Jahr 2000 erstmals veröffentlichten Fdupes für die Kommandozeile [1]. Die meisten Distributionen führen das nur knapp über 100 KByte große Werkzeug in den Archiven und installieren es über das jeweilige Paketmanagement. Eine Anleitung für Debian, Fedora und Arch Linux zeigt Listing 1.

Listing 1

Fdupes installieren

##### Debian und Derivate:
$ sudo apt install fdupes
##### Fedora:
$ sudo dnf install fdupes
#####Arch Linux und Derivate
$ sudo pacman -S fdupes

Die aktuelle Version 2.2.1 vom September 2022 steht noch nicht in allen Repositories zur Verfügung [2]. Falls Sie Fdupes deshalb aus dem Quelltext kompilieren möchten, nutzen Sie das Tar-Archiv von Github. Nach dem Entpacken schließt sich der bekannte Dreisatz aus ./configure, make und make install an. Ab Fdupes 2.0 existieren zwei Abhängigkeiten, die Sie je nach Distribution ebenfalls selbst erstellen müssen. Dazu folgen Sie den Anweisungen der Datei INSTALL aus dem entpackten Archiv.

Nach der Installation lässt sich das Tool sofort ohne Konfiguration einsetzen. Es identifiziert Dateidubletten in den angegebenen Verzeichnissen mithilfe mehrerer Schritte. Um als Dublette erkannt zu werden, spielt der Dateiname keine Rolle. Vielmehr müssen zwei Dateien zunächst dieselbe Größe aufweisen, woraufhin Fdupes deren Md5-Prüfsummen vergleicht. Abschließend führt die Software einen ein Byte-zu-Byte-Abgleich durch, der bestimmt, dass es sich zweifellos um die gleiche Datei handelt.

Fdupes verfügt über zahlreiche Optionen, um die Suche und das darauf folgende Entfernen der Dubletten zu steuern. Initial sollten Sie sich dementsprechend mithilfe des Befehls fdupes --help damit vertraut machen und die für Sie passenden Optionen identifizieren.

Testparcours

Wir haben für unseren Test im Verzeichnis Dokumente das Verzeichnis fdupesangelegt und darin zehn Textdateien mit dem Text fdupes findet und entfernt Dubletten. erstellt. Wie Sie das auf die Schnelle erledigen, zeigt Listing 1.

Listing 1

Mehrere Textdateien gleichzeitig erstellen

mkdir /home/"$USER"/Dokumente/fdupes\
  && cd /home/"$USER"/Dokumente/fdupes\
    && for i in {1..10}; do echo\
      "fdupes findet und entfernt Dubletten."\
        > fdupes${i}.txt ; done

Ein folgendes ls -l bestätigt das Erstellen der Dateien. Der einfachste Weg, um im neuen Verzeichnis nach Dubletten zu suchen, besteht darin, das Kommando fdupes ~/Dokumente/fdupes zu nutzen (Abbildung 1). Indem Sie die Pfade durch Leerzeichen trennen, lassen sich mehrere Verzeichnisse auf einmal angeben. Um rekursiv in Verzeichnissen zu suchen, verwenden Sie die Option -r, etwa fdupes -r ~/Dokumente (Abbildung 2). Auch in diesem Fall findet das Tool neben einigen anderen Dubletten unsere zehn Textdateien. Mit der Option -R geben Sie den Pfad von Unterverzeichnissen an, die Sie einbeziehen möchten.

Abbildung 1: Die einfachste Methode zum Aufspüren von Dubletten gelingt ohne den Aufruf von Parametern unter Angabe des richtigen Verzeichnisses.

Abbildung 1: Die einfachste Methode zum Aufspüren von Dubletten gelingt ohne den Aufruf von Parametern unter Angabe des richtigen Verzeichnisses.

Abbildung 2: Mit dem Parameter <code>-R</code> steigen Sie bei der Suche im Verzeichnisbaum weiter hinab.

Abbildung 2: Mit dem Parameter -R steigen Sie bei der Suche im Verzeichnisbaum weiter hinab.

Der Schalter -S (Size) zeigt Ihnen die Größe der jeweiligen Fundstellen an. Mit -t oder --time erfahren Sie, wann eine Datei zuletzt geändert wurde. Über -G oder --minsize=SIZE und -L oder --maxsize=SIZE grenzen Sie die Auswahl weiter ein.

Vorsicht beim Entfernen

Doch das Finden ist nur der erste Teil der Aufgabe, schließlich wollen wir ja Dubletten löschen, um die Festplatte aufzuräumen. Hier kommt die Option -d (delete) zum Zug. Schauen wir uns an, was der Befehl fdupes -d ~/Dokumente/fdupes macht. Stellen Sie dabei stets sicher, dass Ihre Pfadangabe stimmt – mit Fdups gelöschte Dateien lassen sich nicht wiederherstellen.

Das Kommando listet zunächst die Dateien nummeriert auf. Bitte beachten Sie, dass die Zahl am Zeilenanfang nicht zwingend mit der Nummerierung im Namen der Datei übereinstimmen muss. Geben Sie nun Zahlen durch Komma getrennt ein, erhalten diese ein Pluszeichen und bleiben unversehrt, alle mit einem Minus versehenen Dubletten entfernt die Software.

Haben Sie sich vertan, löscht der Befehl rg Ihre vorherigen Angaben. Das Drücken von [Entf]+ setzt Ihre Eingaben um. Möchten sie alle Dubletten außer der ersten angezeigten beseitigen, nutzen Sie den Befehl fdupes -r -d -N /Pfad. Dabei brauchen Sie nicht [Entf] zu drücken – Der Schalter -N (noprompt) funktioniert ohne Bestätigung (Abbildung 3).

Abbildung 3: Der Parameter <code>-d</code> dient zum L&ouml;schen gefundener Dubletten und listet diese nummeriert auf.

Abbildung 3: Der Parameter -d dient zum Löschen gefundener Dubletten und listet diese nummeriert auf.

Eine weitere Möglichkeit der Auswahl nach dem Aufruf von Fdupes mit der Option -d bietet der Parameter sel. Sie wählen alle Dateien mit einem bestimmten Begriff im Pfad durch Eingabe von sel <Begriff>. Um alle Dateien, deren Pfad mit dem Begriff beginnt, auszuwählen, nutzen Sie selb <Begriff>. Mit sele <Begriff> wählen Sie Dateien, deren Pfad mit dem Begriff endet. Alle Dateien, deren Pfad genau dem Begriff entspricht, wählen Sie mithilfe des Befehls selm <Begriff>. Danach bestimmen Sie, welche der gefundenen Kandidaten Sie behalten möchten. Weitere Möglichkeiten liefert Ihnen das Kommando help, das die entsprechende Passage der Manpage zu Fdupes anzeigt.

Hard- und Softlinks

Darüber hinaus reduzieren Sie mithilfe von Fdupes den Platzanspruch von Dubletten, indem Sie diese in Hardlinks umzuwandeln. Ein Hardlink verbindet einen Namen direkt mit einer bestimmten Datei im System. Dabei können mehrere Hardlinks auf dieselbe Datei verweisen, also mehrere Verzeichniseinträge oder Dateinamen für ein und dieselbe Datei existieren. Im Gegensatz zu einem Softlink, bei dem sich der Zeiger ändert, sobald Sie die Datei umbenennen, verweist ein Hardlink danach weiterhin auf die zugrunde liegende Datei.

Nehmen wir an, Sie betreuen einen Rechner, den mehrere Nutzer verwenden. Regelmäßig kommt es vor, dass sie gleiche Dateien in Ihren Heimatverzeichnissen speichern, beispielsweise YouTube-Videos oder Audiodateien. In diesem Fall können Sie die Dateien nicht einfach löschen. Die Option -H wandelt Dubletten jedoch in Hardlinks um. Löscht ein User seine Kopie, bleiben die anderen dennoch erhalten. Trotzdem eignet sich diese Option nicht ausnahmslos – Ändert ein Anwender etwa die Metadaten eines Songs oder Fotos, ändern sie sich auch in allen verlinkten Objekten. Dasselbe gilt für das Editieren von Textdateien. -H eignet sich dementsprechend eher für nur lesbare Dateien. Ebenfalls mit Vorsicht zu genießen, ist der Schalter -s oder --symlink, der Dubletten einer Datei in symbolische Links (Softlinks) umwandelt. Mitunter passiert es hierbei, dass der Nutzer den Symlink speichert und versehentlich die eigentliche Datei löscht.

Warum CLI?

Warum sollte man sich für eine Kommandozeilenlösung entscheiden, obwohl es grafische Alternativen gibt, die eventuell sogar einen besseren Überblick bieten? Einerseits lassen sich GUI-Anwendungen auf den meisten Servern nicht einsetzen. Andererseits arbeitet die Terminalvariante speziell bei der Suche in größeren Verzeichnissen deutlich zügiger. Die früher weitverbreitete, in Python verfasste GUI-Anwendung Fslint ist inzwischen zum Beispiel bei Ubuntu, Debian und anderen Distributionen aus den Repositories verschwunden. Dafür steht mit Czkawka (Abbildung 4) ein wesentlich schneller arbeitender Fork in der Sprache Rust zur Verfügung. Eine Alternative bietet Dupeguru (Abbildung 5). Als Ersatz für Fdupes empfiehlt sich Jdupes. Behalten Sie dabei allerdings im Hinterkopf, dass sich die Befehle beider Werkzeuge teilweise unterscheiden.

Abbildung 4: Czkawka ist eine in Rust geschriebene Umsetzung des fr&uuml;her weitverbreiteten Fslint. Es ist schneller und belegt weniger Arbeitsspeicher als der Vorg&auml;nger.

Abbildung 4: Czkawka ist eine in Rust geschriebene Umsetzung des früher weitverbreiteten Fslint. Es ist schneller und belegt weniger Arbeitsspeicher als der Vorgänger.

Abbildung 5: Dupeguru hei&szlig;t eine weitere Alternative, wenn Sie Dubletten &uuml;ber eine GUI finden m&ouml;chten. Ergebnisse lassen mittels Filtern oder Regular Expression einschr&auml;nken.

Abbildung 5: Dupeguru heißt eine weitere Alternative, wenn Sie Dubletten über eine GUI finden möchten. Ergebnisse lassen mittels Filtern oder Regular Expression einschränken.

Fazit

Mit Fdupes finden Sie Dubletten, entfernen sie oder umwandeln sie um. Allerdings gibt es gattungsbedingt Fallstricke, die zum Datenverlust führen können. Neben den bereits genannten möglichen Problemen mit Sym- und Hardlinks gibt es Systemdateien, die in doppelter Version vorliegen müssen, aber als Dubletten erkannt werden. Auch leere Verzeichnisse oder Dateien lassen sich nicht in jedem Fall bedenkenlos löschen. Daher sollten Sie nur Dateien und Verzeichnisse entfernen, deren Inhalt und Bedeutung Sie einschätzen können. (tle)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 06/2023 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben