Entdoppeltes Lottchen

Festplatten sind immer zu 95 % gefüllt, sagt die Faustregel. Meist enthält der Dateienberg eine Reihe von Dubletten - mehrere Dateien mit identischem Inhalt. Löscht man den Doppelgänger oder ersetzt ihn durch einen Link, kann man mitunter viel Platz sparen.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Michael Riepe

Auf fast allen Rechnern finden sich Dateien, die einander aufs Haar gleichen. So fand etwa der Autor auf seinem Linux-PC etliche Kopien der GNU General Public License - mit zwar unterschiedlichen Namen und Zeitstempeln, doch identischem Inhalt. Unter Windows begegnet man ebenfalls zahlreichen Kopien bestimmter Dateien, etwa der Laufzeitbibliothek msvcrt.dll. Auf Fileservern und in Archiven treten Zwillingspaare in der Regel noch häufiger auf. Wer regelmäßig seine Daten auf einen externen Speicher kopiert, dürfte einen hohen Grad an Übereinstimmung zwischen zwei Sicherungen feststellen.

Sprechen nicht unterschiedliche Metadaten wie der Eigentümer oder die Zugriffsrechte dagegen, kann man alle Kopien durch Verweise ersetzen. NTFS und die meisten Unix-Dateisysteme bieten dafür sogenannte „harte“ Links an: Mehrere Verzeichniseinträge verweisen auf dieselbe Datei. Sind Hardlinks nicht möglich oder liegen die Zwillinge auf unterschiedlichen Laufwerken beziehungsweise Partitionen, kann man symbolische Verweise (Symlinks oder Verknüpfungen) verwenden. Sie beanspruchen allerdings mehr Speicherplatz.

Mehr Infos

Zunächst gilt es jedoch, die Zwillingspaare zu finden. Dabei leisten fdupes oder duff gute Dienste (siehe Kasten „Onlineressourcen“). fdupes durchforstet ein oder mehrere Verzeichnisse. Unterverzeichnisse lassen sich mit der Option -r einschließen. duff erwartet die Namen einzelner Dateien als Argumente, duff -r durchsucht auch Verzeichnisbäume. Beide Programme geben eine Liste aus, die die Namen aller Fundstücke enthält. Identische Dateien sind zu Gruppen zusammengefasst. duff ergänzt jede Gruppe um eine Überschrift, die normalerweise die Länge und eine Prüfsumme der Dateien enthält.

Wer alle überflüssigen Kopien entfernen will, kann fdupes -f oder duff -e verwenden. Beide Befehle geben nur die Namen der gefundenen Kopien aus. Mit einem Kommando wie fdupes -f | xargs rm lassen sie sich im gleichen Arbeitsgang löschen. Sollen leere Dateien ungeschoren bleiben, empfehlen sich die Optionen fdupes -n und duff -z.

Wem automatisches Löschen zu unheimlich ist, der kann dupseek verwenden. Das Perl-Skript fragt den Nutzer, ob er Kopien behalten, löschen oder durch Links ersetzen will. Mit -b <aktion> lässt sich eine der Aktionen report, delete oder link automatisch für alle Dateien in einem oder mehreren Verzeichnisbäumen ausführen.

Auf das Herstellen von Links hat sich freedup spezialisiert. Das Programm arbeitet rekursiv und eignet sich besonders für Multiuser-Umgebungen, weil es nicht nur den Inhalt der Dateien berücksichtigt, sondern auf Wunsch auch Metadaten. Mit den Optionen -u, -g und -p verbindet es nur Dateien, die demselben Nutzer und derselben Gruppe gehören sowie identische Zugriffsrechte aufweisen. Soll auch der Zeitstempel (mtime) übereinstimmen, muss man die Option -d hinzufügen. freedup -f würde sogar die eineiigen Zwillinge Luise und Lotte getrennt lassen, weil ihre Namen sich unterscheiden.

Normalerweise erzeugt freedup „harte“ Links, wenn sich die Gelegenheit bietet. Mit -w kann man das Programm anweisen, ausschließlich Symlinks zu verwenden. Allerdings beschränkt sich freedup dabei auf Dateien, deren absoluten Pfad es kennt - andernfalls bestünde die Gefahr, dass die Links ins Nichts zeigen. Wer das Risiko eingehen will, kann freedup -s verwenden. Die Option -l verbietet dem Programm die Nutzung von Symlinks. Will der Nutzer lediglich wissen, ob sich der Aufwand lohnt, kann er mit freedup -n einen Testlauf starten.

Wer mehr Kontrolle über die untersuchten Dateien benötigt, kann selbst eine Liste zusammenstellen und sie an das Programm übergeben: find /archiv -type f -name ’*.txt’ -print | freedup etwa beschränkt die Suche auf Dateien mit der Namensendung .txt. Da freedup ebenfalls find aufruft, lässt sich derselbe Effekt auch mit dem Kommando freedup -o "-name ’*.txt’" /archiv erreichen. Die freedup-Option -o lässt sich nur einmal nutzen. Ihr Argument darf jedoch mehrere Optionen für find enthalten.

Eine Sonderstellung nehmen epac und ftwin ein. epac ersetzt - nach Rücksprache mit dem Nutzer - Dateien auch durch verlängerte Versionen ihrer selbst, sofern der Anfang der längeren Datei mit der kürzeren exakt übereinstimmt. Die aktuelle Version 0.5.0 von ftwin findet nicht nur identische Dateien, sondern mit der Option -I auch Bilder mit identischen Motiven. Dabei steht dem Programm die Bibliothek libpuzzle hilfreich zur Seite. Allerdings beschränkt sich ftwin wie fdupes oder duff darauf, die Namen der Fundstücke anzuzeigen. (mr)