Warum aktualisiert Robocopy das Erstelldatum einer durch kopieren erzeugter Datei nicht?
Guten Morgen Kollegen!
Aufgabe:
Ich möchte ein Zweigleisiges Backup-System aufbauen:
1. Einen "Ringpuffer". Hierbei werden Dateien vom Server auf dem Server vollständig und täglich kopiert, um z.B. änderungen in den Dateien reproduzieren zu können...
2. Ein inkrementelles "Net-Backup" auf einem externen Netzwerkteilnehmer.
Problem:
Das Problem bereitete mir der Ringpuffer:
Um alles was älter als 5 Tage tage ist per delage löschen zu können, muss ich beim kopiervorgand das Erstelldatum (createdate) auf das aktuelle (also der Zeitstempen an welchem das Kopieren stattfindet) stzen lassen.
Mit XCOPY klappt das super.
Mit ROBOCOPY nicht.
Warum?
Ich habe mit den untreschiedlichesten Parapetersätzen experimentiert (/COPY:D, etc..) egal was ich einstelle: ROBOCOPY schreibt das Erstelldatum der Quelle ins Ziel...
Das ist mir unbegreiflich.
Hat jemand fierzu eine Idee?
Es moss doch möglich sein ROBOCOPY hier das richtige verhalten beizubringen...
Ich würde gerne alleine schon wegen der protokollfunktion mit ROBOCOPY arbeiten...
Danke für eure Hilfe!
Script mit ROBOCOPY:
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%c%%d%%b%%a%
for /f "delims=: tokens=1" %%i in ("%time%") do Set "Stunden=%%~i"
for /f "delims=: tokens=2" %%i in ("%time%") do Set "Minuten=%%~i"
REM ----------------------------------------------------
REM RINGPUFFER
REM ----------------------------------------------------
REM robocopy D:\copyflag\ E:\Backup\Ring\%cdate%\copyflag\ /MIR
REM robocopy D:\CAD\ E:\Backup\Ring\%cdate%\CAD\ /E /COPY:D /V /NP /LOG+:"E:\Backup\Ring\%cdate%\cad.log" /R:10 /W:30
REM robocopy D:\Sonstiges\ E:\Backup\Ring\%cdate%\Sonstiges\ /E /COPY:D /V /NP /LOG+:"E:\Backup\Ring\%cdate%\cad.log" /R:10 /W:30
REM robocopy D:\Dokumente\ E:\Backup\Ring\%cdate%\Dokumente\ /E /COPY:D /V /NP /LOG+:"E:\Backup\Ring\%cdate%\dokumente.log" /R:10 /W:30
REM ----------------------------------------------------
REM Inkrementell auf \\WS-MARQU0712
REM ----------------------------------------------------
REM robocopy D:\CAD\ \\WS-MARQU0712\Backup\Backup\CAD\ /E
REM robocopy D:\Sonstiges\ \\WS-MARQU0712\Backup\Backup\Sonstiges\ /E
REM robocopy D:\Dokumente\ \\WS-MARQU0712\Backup\Backup\Dokumente\ /E
Script mit XCOPY:
*
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%c%%d%%b%%a%
for /f "delims=: tokens=1" %%i in ("%time%") do Set "Stunden=%%~i"
for /f "delims=: tokens=2" %%i in ("%time%") do Set "Minuten=%%~i"
REM ----------------------------------------------------
REM RINGPUFFER VIA XCOPY
REM ----------------------------------------------------
xcopy D:\CAD\*.* E:\Backup\Ring\%cdate%\CAD\ /E /C /Y
xcopy D:\Sonstiges\*.* E:\Backup\Ring\%cdate%\Sonstiges\ /E /C /Y
xcopy D:\Dokumente\*.* E:\Backup\Ring\%cdate%\Dokumente\ /E /C /Y
REM ----------------------------------------------------
REM Inkrementell auf \\WS-MARQU0712 VIA ROBOCOPY
REM ----------------------------------------------------
REM robocopy D:\CAD\ \\WS-MARQU0712\Backup\Backup\CAD\ /E
REM robocopy D:\Sonstiges\ \\WS-MARQU0712\Backup\Backup\Sonstiges\ /E
REM robocopy D:\Dokumente\ \\WS-MARQU0712\Backup\Backup\Dokumente\ /E
*
Aufgabe:
Ich möchte ein Zweigleisiges Backup-System aufbauen:
1. Einen "Ringpuffer". Hierbei werden Dateien vom Server auf dem Server vollständig und täglich kopiert, um z.B. änderungen in den Dateien reproduzieren zu können...
2. Ein inkrementelles "Net-Backup" auf einem externen Netzwerkteilnehmer.
Problem:
Das Problem bereitete mir der Ringpuffer:
Um alles was älter als 5 Tage tage ist per delage löschen zu können, muss ich beim kopiervorgand das Erstelldatum (createdate) auf das aktuelle (also der Zeitstempen an welchem das Kopieren stattfindet) stzen lassen.
Mit XCOPY klappt das super.
Mit ROBOCOPY nicht.
Warum?
Ich habe mit den untreschiedlichesten Parapetersätzen experimentiert (/COPY:D, etc..) egal was ich einstelle: ROBOCOPY schreibt das Erstelldatum der Quelle ins Ziel...
Das ist mir unbegreiflich.
Hat jemand fierzu eine Idee?
Es moss doch möglich sein ROBOCOPY hier das richtige verhalten beizubringen...
Ich würde gerne alleine schon wegen der protokollfunktion mit ROBOCOPY arbeiten...
Danke für eure Hilfe!
Script mit ROBOCOPY:
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%c%%d%%b%%a%
for /f "delims=: tokens=1" %%i in ("%time%") do Set "Stunden=%%~i"
for /f "delims=: tokens=2" %%i in ("%time%") do Set "Minuten=%%~i"
REM ----------------------------------------------------
REM RINGPUFFER
REM ----------------------------------------------------
REM robocopy D:\copyflag\ E:\Backup\Ring\%cdate%\copyflag\ /MIR
REM robocopy D:\CAD\ E:\Backup\Ring\%cdate%\CAD\ /E /COPY:D /V /NP /LOG+:"E:\Backup\Ring\%cdate%\cad.log" /R:10 /W:30
REM robocopy D:\Sonstiges\ E:\Backup\Ring\%cdate%\Sonstiges\ /E /COPY:D /V /NP /LOG+:"E:\Backup\Ring\%cdate%\cad.log" /R:10 /W:30
REM robocopy D:\Dokumente\ E:\Backup\Ring\%cdate%\Dokumente\ /E /COPY:D /V /NP /LOG+:"E:\Backup\Ring\%cdate%\dokumente.log" /R:10 /W:30
REM ----------------------------------------------------
REM Inkrementell auf \\WS-MARQU0712
REM ----------------------------------------------------
REM robocopy D:\CAD\ \\WS-MARQU0712\Backup\Backup\CAD\ /E
REM robocopy D:\Sonstiges\ \\WS-MARQU0712\Backup\Backup\Sonstiges\ /E
REM robocopy D:\Dokumente\ \\WS-MARQU0712\Backup\Backup\Dokumente\ /E
Script mit XCOPY:
*
FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%c%%d%%b%%a%
for /f "delims=: tokens=1" %%i in ("%time%") do Set "Stunden=%%~i"
for /f "delims=: tokens=2" %%i in ("%time%") do Set "Minuten=%%~i"
REM ----------------------------------------------------
REM RINGPUFFER VIA XCOPY
REM ----------------------------------------------------
xcopy D:\CAD\*.* E:\Backup\Ring\%cdate%\CAD\ /E /C /Y
xcopy D:\Sonstiges\*.* E:\Backup\Ring\%cdate%\Sonstiges\ /E /C /Y
xcopy D:\Dokumente\*.* E:\Backup\Ring\%cdate%\Dokumente\ /E /C /Y
REM ----------------------------------------------------
REM Inkrementell auf \\WS-MARQU0712 VIA ROBOCOPY
REM ----------------------------------------------------
REM robocopy D:\CAD\ \\WS-MARQU0712\Backup\Backup\CAD\ /E
REM robocopy D:\Sonstiges\ \\WS-MARQU0712\Backup\Backup\Sonstiges\ /E
REM robocopy D:\Dokumente\ \\WS-MARQU0712\Backup\Backup\Dokumente\ /E
*
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 252419
Url: https://administrator.de/forum/warum-aktualisiert-robocopy-das-erstelldatum-einer-durch-kopieren-erzeugter-datei-nicht-252419.html
Ausgedruckt am: 22.04.2025 um 06:04 Uhr
9 Kommentare
Neuester Kommentar
Hallo,
Ich verstehe nicht ganz, wozu du ein verändertes Erstelldatum für die Löschaktion überhaupt benötigst? Laut deinem Skript machst du jedesmal eine vollständige Kopie in einen neuen Ordner. Du kannst doch einfach diese Ordner nach deren Alter aufräumen.
Was ich noch anmerken möchte: von dem inkrementellen Teil bin ich nicht so überzeugt. Du sammelst dort zwar alle Dateien, aber alte werden nicht gelöscht. Damit vermüllen die Backupornder und eine saubere Wiederherstellung wird schwieriger. Da hilft /MIR.
Zudem würde ich auch außerhalb des Servers mehrere Backupstände bevorzugen.
Man könnte z.B. einmal pro Woche einen komplettes Backup ziehen und unter der Woche nur die veränderten Dateien. Geht leicht mit dem Archive-Attribut, Robocopy-Optionen /A und /M.
z.B.
wöchentlich:
robocopy D:\CAD\ \\WS-MARQU0712\Backup\%cdate%-voll\CAD\ /E
täglich differentiell:
robocopy D:\CAD\ \\WS-MARQU0712\Backup\%cdate%-diff\CAD\ /E /A
oder inkrementell:
robocopy D:\CAD\ \\WS-MARQU0712\Backup\%cdate%-inkr\CAD\ /E /M
Zur Wiederherstellung das letzte Vollbackup zurückspielen und entweder den letzten Diff-Ordner oder alle Inkr-Ordner seitdem. Aufräumen kannst du auch hier nach dem Datum des Backupordners.
Gruß
Ich verstehe nicht ganz, wozu du ein verändertes Erstelldatum für die Löschaktion überhaupt benötigst? Laut deinem Skript machst du jedesmal eine vollständige Kopie in einen neuen Ordner. Du kannst doch einfach diese Ordner nach deren Alter aufräumen.
Was ich noch anmerken möchte: von dem inkrementellen Teil bin ich nicht so überzeugt. Du sammelst dort zwar alle Dateien, aber alte werden nicht gelöscht. Damit vermüllen die Backupornder und eine saubere Wiederherstellung wird schwieriger. Da hilft /MIR.
Zudem würde ich auch außerhalb des Servers mehrere Backupstände bevorzugen.
Man könnte z.B. einmal pro Woche einen komplettes Backup ziehen und unter der Woche nur die veränderten Dateien. Geht leicht mit dem Archive-Attribut, Robocopy-Optionen /A und /M.
z.B.
wöchentlich:
robocopy D:\CAD\ \\WS-MARQU0712\Backup\%cdate%-voll\CAD\ /E
täglich differentiell:
robocopy D:\CAD\ \\WS-MARQU0712\Backup\%cdate%-diff\CAD\ /E /A
oder inkrementell:
robocopy D:\CAD\ \\WS-MARQU0712\Backup\%cdate%-inkr\CAD\ /E /M
Zur Wiederherstellung das letzte Vollbackup zurückspielen und entweder den letzten Diff-Ordner oder alle Inkr-Ordner seitdem. Aufräumen kannst du auch hier nach dem Datum des Backupordners.
Gruß
/COPY:D und /COPY:DAT liefern beim Ringpuffer (also beim Vollbackup) keine unterschiedlichen ergebnisse: Immer wird Erstell- und Änderungsdatum der > Quelldatei übernommen
Na, ich würde mich gewaltig beschweren, wenn sich bei diesem Befehl die Dateiattribute verändert würden.
Versuche es einmal mit der Option /nocopy
LG Günther
Hallo Zusammen.
Aus der robocopy.doc:
Hintergrund ist sicherlich die Tatsache, dass ROBOCOPY auch das Kopieren oder Ausschließen anhand des Alters einer Datei unterstützt und darum die ursprünglichen Timestamps der Dateien benötigt, um dies feststellen zu können.
Grüße
rubberman
Aus der robocopy.doc:
Note If file Data is copied, then file Timestamps are also copied.
Heißt, egal was du angibst, sobald eine Datei samt Inhalt kopiert wird, werden die Timestamps übernommen.Hintergrund ist sicherlich die Tatsache, dass ROBOCOPY auch das Kopieren oder Ausschließen anhand des Alters einer Datei unterstützt und darum die ursprünglichen Timestamps der Dateien benötigt, um dies feststellen zu können.
Grüße
rubberman
Hallo Steffen,
ich kapier's nicht. Mache ein neues Vollbackup, lösche das vor 3 Tagen erstellte Backup und gut
zu 1. Es gibt Tools im Netz (suche nach "Touch for Windows" oder ähnlich) die das können. Zur Not kann ich dir auch mein eigenes Tool zur Verfügung stellen, falls du nichts brauchbares findest.
zu 2. Wenn dir die Daten etwas Wert sind, wirst du auf XCOPY verzichten wollen.
Grüße
rubberman (Namensvetter btw
)
ich kapier's nicht. Mache ein neues Vollbackup, lösche das vor 3 Tagen erstellte Backup und gut
zu 1. Es gibt Tools im Netz (suche nach "Touch for Windows" oder ähnlich) die das können. Zur Not kann ich dir auch mein eigenes Tool zur Verfügung stellen, falls du nichts brauchbares findest.
zu 2. Wenn dir die Daten etwas Wert sind, wirst du auf XCOPY verzichten wollen.
Grüße
rubberman (Namensvetter btw
Hallo Steffen,
Das
Ich glaube mich zu erinnern, dass keine Netzwerkpfade unterstützt werden. In dem Fall mappst du dir eben ein Netzlaufwerk mit
Grüße
rubberman
FORFILES
sollte das regeln können. Ist (im Gegensatz zu DelAge) auch bereits an Bord.forfiles /p "x:\wo deine backups liegen" /d -3 /c "cmd /c if /i @isdir==true ECHO rd /s /q @path"
ECHO
sorgt dafür, dass die Kommandozeilen nur ausgegeben werden (nichts wird tatsächlich gelöscht). Wenn die richtigen Verzeichnisse gefunden werden, entferne es.Ich glaube mich zu erinnern, dass keine Netzwerkpfade unterstützt werden. In dem Fall mappst du dir eben ein Netzlaufwerk mit
NET USE
...Grüße
rubberman