robocopy MIR gelöschte dateien in quelle auf ziel verschieben anstatt löschen
Moin zusammen,
benutze nun schon einige Zeit zufrieden robocopy.
nun ist mir bei meinen privaten sicherung das malheur passiert, dass ich daten auf der quelle gelöscht habe, die robocopy nun im /MIR-Mode natürlich auch nach Ausführung auf dem Ziel gelöscht hat.
nunja unfein, da das löschen nicht beabsichtigt war.
frage nun: gibt es eine elegante lösung gelöschte dateien beim lauf auf dem ziel erstmal in einen ordner zu verschieben anstatt sie direkt zu löschen (wenn möglich mit erhalt der ordnerstruktur?)
ich mein da könnte man bestimmt was mit einem script vor ausführung von robocopy machen, das die nicht mehr vorhandenen dateien eben verschiebt.
aber gibt es nicht vielleicht genau so etwas schon oder lässt sich das doch mit robocopy direkt bewerkstelligen?
hab da leider nix gefunden, daher hier die frage.
cheers,
lindsche
benutze nun schon einige Zeit zufrieden robocopy.
nun ist mir bei meinen privaten sicherung das malheur passiert, dass ich daten auf der quelle gelöscht habe, die robocopy nun im /MIR-Mode natürlich auch nach Ausführung auf dem Ziel gelöscht hat.
nunja unfein, da das löschen nicht beabsichtigt war.
frage nun: gibt es eine elegante lösung gelöschte dateien beim lauf auf dem ziel erstmal in einen ordner zu verschieben anstatt sie direkt zu löschen (wenn möglich mit erhalt der ordnerstruktur?)
ich mein da könnte man bestimmt was mit einem script vor ausführung von robocopy machen, das die nicht mehr vorhandenen dateien eben verschiebt.
aber gibt es nicht vielleicht genau so etwas schon oder lässt sich das doch mit robocopy direkt bewerkstelligen?
hab da leider nix gefunden, daher hier die frage.
cheers,
lindsche
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 103472
Url: https://administrator.de/contentid/103472
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo lindsche und willkommen im Forum!
Wenn ich das richtig verstanden habe, dann etwa so:
Vorweg:
Es sollen alle Dateien aus der Sicherung, die in der Quelle nicht mehr vorhanden sind, in einen "Zwischenspeicher" verschoben werden. Der Speicherort dieses "Zwischenspeichers" darf dabei nicht unterhalb des Sicherungsordners liegen (also im Beispiel oben wäre "X:\Sicherung\Zwischen" nicht möglich).
Kurz zum Ablauf:
Damit die Ordnerstruktur beim Verschieben bereits vorhanden ist ("move" erstellt keine Ordner), diese vorweg mit "xcopy" erstellen.
Dann mit "robocopy" ein "purge" simulieren (durch Verwendung von "/L") und die "*EXTRA Fiiles" in einem Unterprogramm einzeln verschieben lassen.
Damit die Ordnerstruktur erhalten bleibt, im Pfad der zu verschiebenden Datei den derzeitigen Basispfad %Sicherung% durch den neuen Basispfad %Zwischen% ersetzen (so würde also etwa aus "X:\Sicherung\Ordner\Datei.txt" "X:\Temp\Zwischen\Ordner\Datei.txt").
Zum Verschieben ist anzumerken, dass wegen des "echo" vor dem "move" (zum Testen) die Befehle nur angezeigt werden - tatsächlich verschoben wird erst nach dem Entfernen des "echo". Noch zu beachten: Im "Zwischenspeicher" befindliche gleichnamige Dateien werden überschrieben (was mE auch sinnvoll ist).
Obwohl durch den Schalter "/L" sicher gestellt sein sollte, dass keine Dateien gelöscht werden, zunächst nur Testdaten verwenden!
[Edit] Das Ausfiltern der zu verschiebenden Dateien mit "findstr" sollte sich durch die Schalter "/NJH /NJS /NDL" ersetzen lassen - habe ich aber nicht wirklich getestet. [/Edit]
Grüße
bastla
Wenn ich das richtig verstanden habe, dann etwa so:
@echo off & setlocal
set "Quelle=D:\Daten"
set "Sicherung=X:\Sicherung"
set "Zwischen=X:\Temp\Zwischen"
xcopy /t /i /y "%Sicherung%" "%Zwischen%"
for /f "tokens=3*" %%i in ('robocopy "%Quelle%" "%Sicherung%" /PURGE /S /L /FP^|findstr /c:"\*EXTRA File"') do call :ProcessFile "%%j"
goto :eof
:ProcessFile
set "Z=%~1"
call set "Z=%%Z:%Sicherung%=%Zwischen%%%"
echo move %1 "%Z%"
goto :eof
Es sollen alle Dateien aus der Sicherung, die in der Quelle nicht mehr vorhanden sind, in einen "Zwischenspeicher" verschoben werden. Der Speicherort dieses "Zwischenspeichers" darf dabei nicht unterhalb des Sicherungsordners liegen (also im Beispiel oben wäre "X:\Sicherung\Zwischen" nicht möglich).
Kurz zum Ablauf:
Damit die Ordnerstruktur beim Verschieben bereits vorhanden ist ("move" erstellt keine Ordner), diese vorweg mit "xcopy" erstellen.
Dann mit "robocopy" ein "purge" simulieren (durch Verwendung von "/L") und die "*EXTRA Fiiles" in einem Unterprogramm einzeln verschieben lassen.
Damit die Ordnerstruktur erhalten bleibt, im Pfad der zu verschiebenden Datei den derzeitigen Basispfad %Sicherung% durch den neuen Basispfad %Zwischen% ersetzen (so würde also etwa aus "X:\Sicherung\Ordner\Datei.txt" "X:\Temp\Zwischen\Ordner\Datei.txt").
Zum Verschieben ist anzumerken, dass wegen des "echo" vor dem "move" (zum Testen) die Befehle nur angezeigt werden - tatsächlich verschoben wird erst nach dem Entfernen des "echo". Noch zu beachten: Im "Zwischenspeicher" befindliche gleichnamige Dateien werden überschrieben (was mE auch sinnvoll ist).
Obwohl durch den Schalter "/L" sicher gestellt sein sollte, dass keine Dateien gelöscht werden, zunächst nur Testdaten verwenden!
[Edit] Das Ausfiltern der zu verschiebenden Dateien mit "findstr" sollte sich durch die Schalter "/NJH /NJS /NDL" ersetzen lassen - habe ich aber nicht wirklich getestet. [/Edit]
Grüße
bastla
Hallo A66neu und willkommen im Forum!
Vorweg: Hier in diesem Thread sind wir vermutlich ziemlich unter uns - es wäre daher vermutlich sinnvoller, eine neue Frage zu erstellen und auf diesen Beitrag hier zu verweisen ...
Der Fehler ist etwas schwer nachvollziehbar - schau Dir doch einmal an, was
als Ergebnis liefert - als Batch könnte das so gehen:
Es sollten alle Dateien, die in dieser Liste stehen, auch verschoben werden ...
Grüße
bastla
Vorweg: Hier in diesem Thread sind wir vermutlich ziemlich unter uns - es wäre daher vermutlich sinnvoller, eine neue Frage zu erstellen und auf diesen Beitrag hier zu verweisen ...
Der Fehler ist etwas schwer nachvollziehbar - schau Dir doch einmal an, was
robocopy "%Quelle%" "%Sicherung%" /PURGE /S /L /FP|findstr /c:"\*EXTRA File"
@echo off & setlocal
set "Quelle=D:\Daten"
set "Sicherung=X:\Sicherung"
set "Zwischen=X:\Temp\Zwischen"
robocopy "%Quelle%" "%Sicherung%" /PURGE /S /L /FP|findstr /c:"\*EXTRA File">"%Zwischen%\Dateiliste.txt"
notepad "%Zwischen%\Dateiliste.txt"
Grüße
bastla
Hallo Bastla,
könntest Du mal meinen neuen Thread anschauen, ich habe dort mein Script gepostet, evtl. hast Du ja eine Idee, die Resonanz auf den Beitrag ist auf jeden Fall ganz ganz gering
Robocopy Synchronisation von Daten - gelöschte Daten der Quelle sollen verschoben und nicht gelöscht werden
ich hoffe Du kannst mir weiterhelfen!!!
könntest Du mal meinen neuen Thread anschauen, ich habe dort mein Script gepostet, evtl. hast Du ja eine Idee, die Resonanz auf den Beitrag ist auf jeden Fall ganz ganz gering
Robocopy Synchronisation von Daten - gelöschte Daten der Quelle sollen verschoben und nicht gelöscht werden
ich hoffe Du kannst mir weiterhelfen!!!
Ungeachtet des Alters der Fragestellung (und der Fragesteller
Auf der Suche nach der Lösung die der Fragesteller hatte bin ich auf diesen Thread gestoßen.
Da ich den hier aufgeführten Lösungsansatz aufgrund fehlender Fachkenntnis nicht verstehe/nachvollziehen kann habe ich noch ein wenig gegoogelt und bin auf folgende Lösung gestoßen, die vielleicht auch Anderen nutzt:
Das Programm Personal Backup bietet genau das was "lindsche" und ich gesucht haben:
Die Möglichkeit während einer Datenspiegelung (Backup) die auf dem Ziel eigentlich zu löschenden Dateien zu verschieben, statt sie zu löschen.
http://personal-backup.rathlev-home.de/
Auf der Suche nach der Lösung die der Fragesteller hatte bin ich auf diesen Thread gestoßen.
Da ich den hier aufgeführten Lösungsansatz aufgrund fehlender Fachkenntnis nicht verstehe/nachvollziehen kann habe ich noch ein wenig gegoogelt und bin auf folgende Lösung gestoßen, die vielleicht auch Anderen nutzt:
Das Programm Personal Backup bietet genau das was "lindsche" und ich gesucht haben:
Die Möglichkeit während einer Datenspiegelung (Backup) die auf dem Ziel eigentlich zu löschenden Dateien zu verschieben, statt sie zu löschen.
http://personal-backup.rathlev-home.de/