ordner per batch synchronieren
Hallo zusammen,
folgenden Situation. Über Pfingsten ist eine Festplatte gestorben auf der wie immer wichtige Daten gespeichert sind. Die Datensicherung erfolgte incrementell auf einer anderen Festplate mittels ntbackup. Beim Rücksichern hat ntbackup den Vorgang abgebrochen, da die bkuf Datei inkonsistenzen aufweisst.
Mithilfe von Nucleus Kernel bkf (einen rescue Programm für defekte bkf Dateien) konnte ich soweit ich das übersehen kann den Stammordner sowie die meisten der inkrementell gesicherten Daten wieder herstellen, aber: und nun kommt die eigenliche batchfrage: ich sitze jetzt mit ca 100 Odnern da, in denen sich die hinzugekommen oder geänderten Daten befinden. Das Erstellungsdatum der Dateien ist übern jordan gegangen sprich ist der Wiederherstellungszeitpunkt, aber das Datum der letzten Änderung ist erstaunlicherweise noch richtig, desweiteren sind die Ordner durchnummeriert und die jeweils neuere Datei ist durch den Speicherort von den älteren Versionen zu unterscheiden.
Nun die große Frage, wie bekomme ich ohne jeden ordner einzeln anzufassen alles auf einen Stand? Ich denke xcopy kann das, aber ich müsste x copy ja eine liste der Ordner mit auf den Weg geben deren Inhalt über den Stammordner des Backups synchronisiert werden soll. Hätte ich mir diese Backup konstrukt ausgedacht wäre ich gerne bereit einen virtuellen Tritt in den Hintern entgegenzunehmen, aber Gott sei Dank habe ich das nicht selbst verzapft, sondern darf es nur ausbaden
Vielen Dank im Voraus
Arne
folgenden Situation. Über Pfingsten ist eine Festplatte gestorben auf der wie immer wichtige Daten gespeichert sind. Die Datensicherung erfolgte incrementell auf einer anderen Festplate mittels ntbackup. Beim Rücksichern hat ntbackup den Vorgang abgebrochen, da die bkuf Datei inkonsistenzen aufweisst.
Mithilfe von Nucleus Kernel bkf (einen rescue Programm für defekte bkf Dateien) konnte ich soweit ich das übersehen kann den Stammordner sowie die meisten der inkrementell gesicherten Daten wieder herstellen, aber: und nun kommt die eigenliche batchfrage: ich sitze jetzt mit ca 100 Odnern da, in denen sich die hinzugekommen oder geänderten Daten befinden. Das Erstellungsdatum der Dateien ist übern jordan gegangen sprich ist der Wiederherstellungszeitpunkt, aber das Datum der letzten Änderung ist erstaunlicherweise noch richtig, desweiteren sind die Ordner durchnummeriert und die jeweils neuere Datei ist durch den Speicherort von den älteren Versionen zu unterscheiden.
Nun die große Frage, wie bekomme ich ohne jeden ordner einzeln anzufassen alles auf einen Stand? Ich denke xcopy kann das, aber ich müsste x copy ja eine liste der Ordner mit auf den Weg geben deren Inhalt über den Stammordner des Backups synchronisiert werden soll. Hätte ich mir diese Backup konstrukt ausgedacht wäre ich gerne bereit einen virtuellen Tritt in den Hintern entgegenzunehmen, aber Gott sei Dank habe ich das nicht selbst verzapft, sondern darf es nur ausbaden
Vielen Dank im Voraus
Arne
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 60269
Url: https://administrator.de/contentid/60269
Ausgedruckt am: 14.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo arnito!
Grundsätzlich kannst Du, wie schon vermutet, "xcopy" (mit dem Schalter "/D" ohne Angabe eines Datums) verwenden - damit werden nur neuere Dateien (bzw noch nicht im Zielverzeichnis vorhandene) kopiert.
Damit müsste sich prinzipiell der ganze Vorgang auf eine einfache "for"-Schleife über alle Sicherungsordner realisieren lassen, also etwa
Mit "Quellordner" ist jenes Verzeichnis (mit voller Pfadangabe, also etwa "E:\Backup") gemeint, in dem die einzelnen Sicherungsordner liegen. Auch für "Zielordner" ist ein vollständiger Pfad anzugeben.
Die Vorgabe "/o-d" für die Reihenfolge der Sicherungsordner soll dafür sorgen, dass die neuesten Dateien zuerst kopiert werden, sodass die später folgenden älteren Versionen dann schon übersprungen werden können.
sorgt dafür, dass der Name des Sicherungsordners in eine Logdatei geschrieben wird, und durch den Schalter "/F" und Umleitung der Ausgabe des "xcopy" werden auch alle kopierten Dateien mit Quelle und Ziel protokolliert. Damit Du den Ablauf (die einzelnen "xcopy"-Aufrufe) am Bildschirm mitverfolgen kannst, habe ich bewusst kein "@" verwendet.
Eventuell bereits im Zielverzeichnis vorhandene ältere Dateiversionen (sollte es ja eigentlich nicht geben, wenn das Zielverzeichnis zu Beginn noch leer war) werden durch den Schalter "/Y" ohne Rückfrage überschrieben. Der Einsatz des Schalters "/C" (um bei Fehlern das Kopieren dennoch fortzusetzen) wäre zu überlegen.
Ob Du die "xcopy"-Optionen "/K", "/O" oder ev "/X" benötigst, musst Du selbst entscheiden.
Falls Du die oben dargestellte Zeile als Batch verwenden willst, muss jedes %i als %%i geschrieben werden.
Grüße
bastla
Grundsätzlich kannst Du, wie schon vermutet, "xcopy" (mit dem Schalter "/D" ohne Angabe eines Datums) verwenden - damit werden nur neuere Dateien (bzw noch nicht im Zielverzeichnis vorhandene) kopiert.
Damit müsste sich prinzipiell der ganze Vorgang auf eine einfache "for"-Schleife über alle Sicherungsordner realisieren lassen, also etwa
for /f "delims=" %i in ('dir /b /ad /o-d "Quellordner"') do echo %i>>D:\LogFile.txt & xcopy /S /E /Y /D /F "Quellordner\%i" "Zielordner" >> D:\LogFile.txt
Die Vorgabe "/o-d" für die Reihenfolge der Sicherungsordner soll dafür sorgen, dass die neuesten Dateien zuerst kopiert werden, sodass die später folgenden älteren Versionen dann schon übersprungen werden können.
... echo %i>>D:\LogFile.txt ...
Eventuell bereits im Zielverzeichnis vorhandene ältere Dateiversionen (sollte es ja eigentlich nicht geben, wenn das Zielverzeichnis zu Beginn noch leer war) werden durch den Schalter "/Y" ohne Rückfrage überschrieben. Der Einsatz des Schalters "/C" (um bei Fehlern das Kopieren dennoch fortzusetzen) wäre zu überlegen.
Ob Du die "xcopy"-Optionen "/K", "/O" oder ev "/X" benötigst, musst Du selbst entscheiden.
Falls Du die oben dargestellte Zeile als Batch verwenden willst, muss jedes %i als %%i geschrieben werden.
Grüße
bastla