Löschen geändeter Dateien
Hallo zusammen.
Ich habe hier ein Problem, bei dem ich nun schon ein paar Tage herumspiele.
Hier kurz mein Problem.
Ich habe ein Quell- und ein Zielverzeichnis und beide sind syncron (z.B.: robocopy). Nun möchte ich jede Datei, welche sich im Quellverzeichnis geändert hat, im Zielverzeichnis löschen. Also egal, ob die Datei gelöscht oder geändert wude - sie muss im Zielverzeichnis geläscht werden.
Warum der Aufstand.
Es geht um ein kleines Backup mit Historie.
Der Aufbau ist ganz einfach:
Quellverzeichnis wird mit Zielverzeichnis-"orig" syncronisiert, danach werden im Zielverzeichnis-"archiv" die Verzeichnisstruktur angelegt und mit for + mklink rekursiv alle Dateien per Hardlink vervielfältigt.
Das Problem ist jetzt, dass eine weitere Synchronisation mit robocopy die Dateien im Zielverzeichnis-"orig" aktualisiert und damit auch alle Hardlinks.
Geänderte Dateien werden demnach geupdatet (inkl. aller Hardlinks) und nicht neu erzeugt (mit Verlust der Hardlinks).
Dieses gewünschte Verhalten kenne ich z.B.: aus Linux und rsync und würde es auch so in Windows benötigen.
Einziger Workaround bis her:
Alle Dateien aus Zielverzeichnis-"orig" löschen (die Hardlinks bleiben im Archiv-Verzeichnis bestehen) und die Dateien komplett neu aus dem Quellverzeichnis kopieren. Aber das dauert lange, weshalb ich eine Syncronisation, oder eben das Löschen der geänderten Dateien und anschließende Syncronisation (neu kopieren der gelöschten Dateien) vorziehen würde.
Wäre toll, wenn mir jemand den einen oder anderen Denkanstoß geben könnte.
Danke schon mal im Vorraus.
Robert Kraus
Ich habe hier ein Problem, bei dem ich nun schon ein paar Tage herumspiele.
Hier kurz mein Problem.
Ich habe ein Quell- und ein Zielverzeichnis und beide sind syncron (z.B.: robocopy). Nun möchte ich jede Datei, welche sich im Quellverzeichnis geändert hat, im Zielverzeichnis löschen. Also egal, ob die Datei gelöscht oder geändert wude - sie muss im Zielverzeichnis geläscht werden.
Warum der Aufstand.
Es geht um ein kleines Backup mit Historie.
Der Aufbau ist ganz einfach:
Quellverzeichnis wird mit Zielverzeichnis-"orig" syncronisiert, danach werden im Zielverzeichnis-"archiv" die Verzeichnisstruktur angelegt und mit for + mklink rekursiv alle Dateien per Hardlink vervielfältigt.
Das Problem ist jetzt, dass eine weitere Synchronisation mit robocopy die Dateien im Zielverzeichnis-"orig" aktualisiert und damit auch alle Hardlinks.
Geänderte Dateien werden demnach geupdatet (inkl. aller Hardlinks) und nicht neu erzeugt (mit Verlust der Hardlinks).
Dieses gewünschte Verhalten kenne ich z.B.: aus Linux und rsync und würde es auch so in Windows benötigen.
Einziger Workaround bis her:
Alle Dateien aus Zielverzeichnis-"orig" löschen (die Hardlinks bleiben im Archiv-Verzeichnis bestehen) und die Dateien komplett neu aus dem Quellverzeichnis kopieren. Aber das dauert lange, weshalb ich eine Syncronisation, oder eben das Löschen der geänderten Dateien und anschließende Syncronisation (neu kopieren der gelöschten Dateien) vorziehen würde.
Wäre toll, wenn mir jemand den einen oder anderen Denkanstoß geben könnte.
Danke schon mal im Vorraus.
Robert Kraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 281662
Url: https://administrator.de/forum/loeschen-geaendeter-dateien-281662.html
Ausgedruckt am: 16.04.2025 um 09:04 Uhr
7 Kommentare
Neuester Kommentar

Wieso so unständlich wenn's das doch schon lange auch für Windows gibt. Wie unter Linux werden Backups platzsparend mit Hardlinks realisiert:
http://www.heise.de/download/rsyncbackup.vbs.html
Denn rsync läuft auch unter Windows hervorragend
Gruß grexit
http://www.heise.de/download/rsyncbackup.vbs.html
Denn rsync läuft auch unter Windows hervorragend
Gruß grexit
Als erstes erstellst man hierfür einen Hash der Zieldatei [bei vielen Dateien, eventuell eine "Datenbank" (oder Textdatei mit Zuordnung)]
Anschließend können die Hashes verglichen werden und entschieden werden, ob die Datei übersprungen oder gelöscht wird.
Und das Ganze packt man dann in eine Schleife, die durch alle Dateien und Ordner läuft.
P. S. Eventuell sollte eine andere Anwendung zum Hashen versendet werden, die eventuell auch ganze Verzeichnisse auf einmal hashen kann. Aber CertUtil ist das einzige, was Windows in diese Richtung ohne Zusatzsoftware beherrscht.
CertUtil -hashfile C:\Dokumente\Wichtig.docx MD5
Und das Ganze packt man dann in eine Schleife, die durch alle Dateien und Ordner läuft.
P. S. Eventuell sollte eine andere Anwendung zum Hashen versendet werden, die eventuell auch ganze Verzeichnisse auf einmal hashen kann. Aber CertUtil ist das einzige, was Windows in diese Richtung ohne Zusatzsoftware beherrscht.

Aber CertUtil ist das einzige, was Windows in diese Richtung ohne Zusatzsoftware beherrscht.
Mit Powershell kannst du das hashen schon seit Vista out of the box Dupes mit anderem Dateinamen finden und in "HardLinks" umwandeln (W2k12R2, NTFS)
und noch tausend Dinge mehr als mit Batch.
Um Powershell mache ich irgendwie immer noch einen Bogen, obwohl ich es mir schon lange vorgenommen habe.
Dies liegt unter anderem daran, dass die Script Ausführung in der Standardeinstellung deaktiviert ist und daran, dass ich die Syntax noch nicht richtig verstanden habe.
Aber ich muss zugeben, dass es wirklich sehr mächtig ist......
Dies liegt unter anderem daran, dass die Script Ausführung in der Standardeinstellung deaktiviert ist und daran, dass ich die Syntax noch nicht richtig verstanden habe.
Aber ich muss zugeben, dass es wirklich sehr mächtig ist......