You are currently viewing Dateien löschen mit RoboCopy

Dateien löschen mit RoboCopy

Bei digitalen Aufräumarbeiten habe ich auf meinem NAS eine Verzeichnisstruktur vorgefunden, die nicht nur ein beachtliches Volumen auf dem Speicher belegt hat, sondern sich vor allem auch durch unzählige Unterverzeichnisse und kryptischer Dateien auszeichnete. Die Dateinamen waren offensichtlich aus Hash-Codes gebildet worden und ihr Inhalt rein Binär – das Ergebnis einer früheren Datensicherungslösung.

Das Backup Verzeichnis konnte also weg. Rechte Maustaste, Löschen … dachte ich zumindest!

Es folgte nun der übliche Windows Dialog in dem das Betriebssystem den Status des Löschvorgangs mitteilt. Im ersten Schritt erfasst Windows hier alle Dateien, die gelöscht werden sollen. Alleine dieser Vorgang dauerte einige Minuten, bis schließlich eine sechsstellige Zahl an Dateien erfasst wurde und eine voraussichtliche Dauer des Löschvorgangs mit etwas über einem Tag angegeben wurde.

In der Detailansicht konnte man sehen, dass der Löschvorgang lief, aber schon nach wenigen Minuten reduzierte sich die Verarbeitungsgeschwindigkeit dermaßen, dass die approximative Dauer der Operation auf mehrere Tage erweiterte und letztlich überhaupt kein Fortschritt mehr zu erkennen war.

Ich habe die Operation abgebrochen und versucht einzelne Unterverzeichnisse zu löschen, ja sogar eine kleine Auswahl einzelner Dateien. Ich weiß nicht, ob es die Vielzahl der Dateien oder deren langen Dateinamen die Ursache war, jedoch mit herkömmlichen Mitteln war der Verzeichnisstruktur nicht beizukommen.

Die Lösung musste also auf einer anderen Ebene gefunden werden.

Nun bin ich noch mit Kommandozeilen aufgewachsen und habe keine Angst vor der DOS Shell, die glücklicherweise auch in Windows 10 immer noch verfügbar ist.

Die Lösung meiner Probleme fand sich dann in einem Tool, das ich dafür eigentlich nicht in Betracht gezogen hätte: RoboCopy.

RoboCopy

Wie der Name vermuten lässt, handelt es sich hierbei um ein Programm, das für das automatisierte Abgleichen und Synchronisieren von Dateien und Verzeichnissen vorgesehen ist und einen hierfür äußerst mächtigen Funktionsumfang bietet.

Die Idee ist nun diese: Wenn RoboCopy eine Verzeichnisstruktur mit einer anderen Synchronisieren kann, muss es dabei auch Dateien löschen (können). Synchronisiert man nun ein leeres Verzeichnis (als Original) mit einer bestehenden Verzeichnisstruktur (als Kopie), sollte in der Kopie alles gelöscht werden, was im Original nicht vorhanden ist – also alles.

Die grundlegende Syntax von RoboCopy sieht wie folgt aus:

robocopy <Quelle> <Ziel> [<Filter>] [<Optionen>]

<Quelle> und <Ziel> bezeichnen jeweils Verzeichnisse, die abgeglichen werden sollen.

<Filter> ermöglicht eine Auswahl der Dateien in den Verzeichnissen vorzunehmen. Standardmäßig werden alle Dateien (*.*) synchronisiert, sodass hierzu kein Filter angegeben werden muss.

<Optionen> ermöglichen die Arbeitsweise von RoboCopy genauer zu spezifieren.

In diesem Anwendungsfall kommt die Option /MIR zum Einsatz, die RoboCopy dazu veranlasst eine Spiegelkopie (Mirroring) vorzunehmen. Das bedeutet, dass das Zielverzeichnis am Ende der Operation identisch mit dem Quellverzeichnis ist.

Verzeichnisse löschen mit RoboCopy

Mit diesem Vorwissen ist das Löschen von Verzeichnisstrukturen mit RoboCopy dann recht einfach.

Im ersten Schritt wird ein leeres Verzeichnis benötigt. Dies kann sich an beliebiger Stelle (außerhalb des Zielverzeichnisses) befinden, z. B. C:\leer

Über eine Kommandozeile (Start | cmd) erstellt man dieses leere Verzeichnis mit

md C:\leer

Lautet das zu löschende Zielverzeichnis nun Z:\OldCrazyBackupDir startet man den Löschvorgang mit RoboCopy in der Kommandozeile nun wie folgt:

robocopy C:\leer Z:\OldCrazyBackupDir /MIR

Der Roboter ist damit gestartet und wird eine Weile arbeiten. Ich war zunächst nur bedingt glücklich, weil es aussah, als würde diese Lösung auch nicht wirklich schneller sein, doch dann nahm das Tool Fahrt auf und nach wenigen Minuten wurde das Ergebnis als Statistik angezeigt und das alte Verzeichnis war tatsächlich leer.

Nun mussten nur die beiden leeren Verzeichnisse (C:\leer und Z:\OldCrazyBackupDir) mit Bordmitteln gelöscht werden.

Wie bei allen Löschvorgängen sollte man natürlich Vorsicht walten lassen und besonders den RoboCopy Befehl genau prüfen, bevor man ihn abschickt. Die gelöschten Dateien landen nicht in einem Papierkorb und können somit auch nicht so einfach wiederhergestellt werden.

Dieser Beitrag hat einen Kommentar

  1. Wolfram Steinkopf

    Prima Beitrag!
    Für ganz große Verzeichnisse mit Millionen Dateien empfehle ich zusätzlich die Parameter:

    /mir /w:1 /r:1 /mt:16 (auch höher möglich)

    Damit werden dann auch nicht löschbare Dateien übersprungen und es werden parallel mehrere Löschungen gleichzeitig durchgeführt. Ist ein bisschen Abhängig von der CPU-Leistung und der Core-Anzahl.

Schreibe einen Kommentar

Nutze dieses Kommentarfeld um deine Meinung oder Ergänzung zu diesem Beitrag kundzutun. Verhalte dich bitte respektvoll und höflich! Kommentare werden vor der Veröffentlichung in der Regel moderiert und bei Verstößen gegen geltendes Recht, die guten Sitten, fehlendem Bezug oder missbräuchlicher Verwendung nicht freigegeben oder gelöscht.
Über die Angabe deines Namens, deiner E-Mail Adresse und deiner Webseite freuen wir uns, doch diese Felder sind optional. Deine E-Mail Adresse wird dabei zu keinem Zeitpunkt veröffentlicht.

Um mit dem Betreiber dieser Seite nicht-öffentlich in Kontakt zu treten, nutze die Möglichkeiten im Impressum.