drahtbruecke
Goto Top

Große Dateien archivieren (Backupdateien mit cmd und robocopy)

Hi,

kurz: wie emuliere ich
rsync --remove-source-files -a $quelle/ $ziel/
unter Windows (ich glaube, mit robocopy)?

Ich möchte große Backupdateien auf einen remote Server kopieren, dann lokal aber nur die neuesten paar behalten. Es soll sichergestellt sein, dass nur Dateien gelöscht werden, die auch wirklich fehlerfrei remote kopiert wurden. Es gibt aktuell eine Aufgabenplanung für ein cmd, was per robocopy (unter anderem) diese Backupdateien auf den remote server kopiert. Eine zweite Logik entfernt alte lokale Backupdateien, und zwar mit "move", damit lokal nur die gelöscht werden können, die auch wirklich remote existieren (bzw. hier: damit die zu löschenden Dateien auch wirklich remote existieren).

Hintergrund:
es gibt Verzeichnisse mit Backupdateien, die auf einem remote Server archiviert werden. Aktuell ist da ein Robocopy gefolgt von sowas:

for /f "skip=6 delims=" %%F in ('dir %quelle%\*.zip /B /O-D /A-D') do echo move /Y %quelle%\%%F %ziel% >> %log% 2>&1  
was den Nachteil hat, dass die betreffenden alten Dateien doppelt kopiert werden (das Ziel existiert, move überschreibt es nochmal). Da brauch ich dann ja kein robocopy...
"del" statt "move" geht nicht, weil bei Kopierfehlern gelöscht würde, da kann man natürlich Bedingungen einbauen, aber Backup soll ja einfach und einfach zu prüfen sein.

Das ohnehin vorher verwendete robocopy kennt die Option "/MOV":
for /f "skip=6 delims=" %%F in ('dir %quelle%\*.zip /B /O-D /A-D') do echo robocopy /MOV %quelle% %ziel% %%F >> %log% 2>&1  
aber das funktioniert hier nicht. Augenscheinlich "überspringt" robocopy die schon existierenden Dateien "komplett", also kopiert sich nicht (nochmal) und löscht sie aber auch nicht face-sad.

Hinweis: Nur zur Info, robocopy bekommt noch mehr Optionen, die an dem Verhalten aber nichts ändern, nämlich:
/z /j /r:3 /w:30 /xx /np /njh


Dann gibt es die Option "/Z", die ich eigentlich setzen möchte, da es manchmal (aber sehr selten) Abbrüche gibt. Wenn ich /Z setze, bricht die Geschwindigkeit aber auf irgendwas um die 2 MB/sec ein. Das hab ich drei Nächte mit und drei ohne probiert, es liegt wirklich an dem /Z (und nicht an der Leitung oder so). Ist es dran, war es in allen 3 Fällen langsam, ist es nicht dran, in alle drei Fällen viiiiel schneller.

Eigentlich würde ich robocopy einmal über alles laufen lassen (das passiert über eine Aufgabenplanung regelmässig) und dann z.B. einmal am Tag oder Woche die älteren entfernen. Ein paar aktuelle möchte ich lokal aber behalten, damit man nicht für jede Kleinigkeit remote gucken muss oder das Archiv gerade dann abbrennt, wenn die Bandsicherung nicht geklappt hat oder so. Daher möchte ich alle kopieren, aber lokal nur die neuesten 3 oder 5 aufheben. Dies nur für den Fall, dass es eine einfachere Lösung (vielleicht ohne robocopy) gibt, um das zu erreichen.

Ich verstehe die beiden Verhalten bei /MOV und /Z nicht. Kann mich bitte jemand erleuchten face-smile

Schönes Wochenende!

Content-ID: 5934804603

Url: https://administrator.de/contentid/5934804603

Ausgedruckt am: 24.11.2024 um 02:11 Uhr

Crusher79
Crusher79 11.02.2023 um 21:51:31 Uhr
Goto Top
Hallo,

da gibt es zig Anleitungen bei google zu. PowerShell geht auch und man Objekte vergleichen. Oder mit Hashsummen feststellen, ob die Dateien alle angekommen sind.

Bei Backup fällt mir auch differentiell oder inkmremntell ein... Bei Acornis tragen die Dateien eindeutige UID im Dateinamen. Je nachdem wie die ZIP aussehen musst du ggf. darauf achten, die Backup Chain einzuhalten. Mit zu kopieren. Sonst wird es mit dem Recovery schwer. Generell reduzieren diff und inc Backups die Größe.

Alternative Backup Lokation ist auch Bestandteil vieler Backup-Software. Die bingen das also von Haus aus mit. Bei Backups zu sparen ist auch keine gute Idee.

Wie wird denn auf Band gesichert? Ggf. wäre eine geeignete Backup-Software die alle Task erfüllt sinnvoll.

mfg Crusher
drahtbruecke
drahtbruecke 17.02.2023 um 18:37:19 Uhr
Goto Top
Zitat von @Crusher79:

Hallo,

da gibt es zig Anleitungen bei google zu. PowerShell geht auch und man Objekte vergleichen. Oder mit Hashsummen feststellen, ob die Dateien alle angekommen sind.

Bei Backup fällt mir auch differentiell oder inkmremntell ein... Bei Acornis tragen die Dateien eindeutige UID im Dateinamen. Je nachdem wie die ZIP aussehen musst du ggf. darauf achten, die Backup Chain einzuhalten. Mit zu kopieren. Sonst wird es mit dem Recovery schwer. Generell reduzieren diff und inc Backups die Größe.

Alternative Backup Lokation ist auch Bestandteil vieler Backup-Software. Die bingen das also von Haus aus mit. Bei Backups zu sparen ist auch keine gute Idee.

Wie wird denn auf Band gesichert? Ggf. wäre eine geeignete Backup-Software die alle Task erfüllt sinnvoll.

mfg Crusher

Danke für Deine Antwort.

Kannst Du bitte eine solche Anleitung verlinken, die genau die von mir beschriebenen Probleme erklären?
Ich habe leider nur (viele) Anleitungen gefunden, die erklären, dass die Dateien im ersten Fall nicht gelöscht werden (aber keine Lösung parat haben) und erklären, dass es im zweiten Fall wegen einer blöden Implementierung so extrem langsam wird (aber auch keine Lösung parat haben). Also Anleitungen, die das Problem erklären, aber keine Lösung (vielleicht gibt es auch keine gute Lösung mit robocopy, daher fragte ich).
Mit Powershell für so einen Standardfall extra was zu programmieren wäre sicher overkill und vor allem ist das Testen aller Fehlerzustände und das Implementieren sinnvollen Handlings ja sehr aufwändig (wie man bei Robocopy sieht).

Die Dateien sind ZIPs und nicht inkrementell, aber das sollte dem Robocopy ja egal sein.

Bandsicherungen gibt es mehrere, aber eine (weitere) Kopie als Datei zu haben, spart natürlich viel Zeit, wenn man da ran muss und man braucht keinen Safe-Schlüssel, was gerade nachts ein großer Vorteil ist face-smile
drahtbruecke
Lösung drahtbruecke 17.02.2023 um 18:45:43 Uhr
Goto Top
Falls hier jemand drüber stolpert, hier noch meine Lösung.
Ich habe keine gute Lösung für robocopy gefunden. rsync ist für Windows verfügbar, aber nicht so einfach installierbar, je nach Variante hat es Abhängigkeiten, z.B. WSL2, Cygwin oder MSYS.
Ich habe jetzt tatsächlich den Rückgabewert von robocopy verwendet (Achtung: da gibt es mehrere, die laut Robocopy-Dokumentation nicht als Fehler zählen; die Doku sagt, kleiner gleich 7 sind keine Fehler, aber für mich ist ein Typkonflikt (Zieldatei kann nicht angelegt werden, weil ein Verzeichnis gleichen Namens existiert) z.B. sehr wohl ein Fehler, daher für mich schon alles ab 4 ein Fehler):

IF %ERRORLEVEL% GEQ 4 (
    echo ** KOPIERFEHLER **  >> %log%
    echo %date:~0% %time:~0,8% Uhr: Kopierfehler %ERRORLEVEL%, kein verschieben! >> %log
) else (
    for /f "skip=14 delims=" %%F in ('dir %src%\*.zip /B /O-D /A-D') do del %src%\%%F >> %log% 2>&1  
)