sthetoolking
Goto Top

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

*

Content-Key: 252419

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

Printed on: April 16, 2024 at 11:04 o'clock

Member: DerSchorsch
DerSchorsch Oct 19, 2014 at 08:27:47 (UTC)
Goto Top
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ß
Member: StheToolking
StheToolking Oct 19, 2014 at 09:14:16 (UTC)
Goto Top
Hallo Schorsch,

danke für deine schnelle Antwort.
Alle Deine Anmerkungen sind richtig.
Die von mir desetzten Parameter sind alle so gewollt.

Ringpuffer:
Das cleanup im Ringpuffer übernimmt eine zweite batch mit delage:
"DelAge32 E:\Backup\Ring\*.* 5 /created /includeRO /recurse /rd"
Delage entscheidet anhand des Erstelldatums - deswegen soll diese ja durch ROBOCOPY aktualisiert werden.
Der Sinn des Vollständigen Ringpuffers ist nicht nur file-backup, sondern auch Benutzerfehler abzupuffern.
Wird z.B. eine Datei aus versehen überschrieben, liegt die vorherige version immer nuch im Ringpuffer.
Der Ringpuffer hat sich schon oft als wirksam erwiesen...face-wink

Inkrementell:
Der "Datenmüll" des Parameters /E ist gewollt.
/MIR gibt löschweitergaben ans Ziel - das ist nicht gewollt.
Das Inkrementelle Backup wird Quartalsweise gepackt und ausgelegert - Dann beginnt das Spiel von neuem...

Wie gesagt: XCOPY liefert ein Workaround - ich verstehe nur nicht warum ROBOCOPY nicht in der lage ist bei der Zieldatei das Erstelldatum des Kopiervorgangs zu setzen...
Gibt es vielleich einen Parameter den ich fasch anwenden?
/COPY:D und /COPY:DAT liefern beim Ringpuffer (also beim Vollbackup) keine unterschiedlichen ergebnisse: Immer wird Erstell- und Änderungsdatum der Quelldatei übernommen...

Danke & Gruß.
Member: GuentherH
GuentherH Oct 19, 2014 at 09:29:42 (UTC)
Goto Top
/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
Member: StheToolking
StheToolking Oct 19, 2014 at 10:47:59 (UTC)
Goto Top
Hi Günther,

auch Dir Danke für dein schnelles Feedback!
/NOCOPY bringt bei Vollbackup leider nichts.
Hatte ich auch schon probiert...
/NOCOPY bring nur bei inkrementeller Nutzung und ggf. in Zusammenhang mit /PURGE Sinn. ;-(

Zu deiner Anmerkung:
Wenn in Windows eine Datei kopiert wird, so wird das Änderungsdatum bei der Zieldatei beibehalten und das Erstelldatum bei der Zieldatei neu gesetzt.
Ich denke das ist durchaus sinnvoll: Die Koipe der Datei wir ja auch "neu erstellt"
Der Explorer und die Konsolenprogramme COPY & XCOPY verhalten sich dabei immer gleich: Erstelldatum wird angepasst, Änderungsdatum nicht.
Nur ROBOCOPY verhält sich anders: Beide Datumsstempel werden aus der Quelldatei übernommen. Warum?

Ich kann nich nachvollziehen warum das nich zumindes eine parametrierbare Option ist (Oder ich bin nicht in der Lage diese zu finden)
Eigentlich möchte ich nur, das sich ROBOCOPY finsichtlich der Timestamps so verhält wie XCOPY oder der Rest von Windows face-wink

Gruß.

Steffen.
Member: rubberman
rubberman Oct 19, 2014 at 15:30:51 (UTC)
Goto Top
Hallo Zusammen.

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
Member: StheToolking
StheToolking Oct 20, 2014 at 03:52:48 (UTC)
Goto Top
Danke, Rubberman.

Diese Doku hatte ich nicht gefunden ;-(
Heißt: Ich habe keine Chance ROBOCOPY auf meine Bedürfnisse hin zu trimmen.
Wenn das stimmt sehe ich zwei Möglichkeiten:

1. Die Timestamps nach dem Kopiervorgang manuel (per Batch nicht im Kopiervorgang selbst) neu zu setzen.
2. Mit XCOPY zu arbeiten.

Hat jemand noch "elegantere" Ideen?

Danke und Gruß.

Steffen.
Member: rubberman
rubberman Oct 20, 2014 updated at 16:47:31 (UTC)
Goto Top
Hallo Steffen,

ich kapier's nicht. Mache ein neues Vollbackup, lösche das vor 3 Tagen erstellte Backup und gut face-plain

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 face-wink)
Member: StheToolking
StheToolking Oct 20, 2014 at 17:27:12 (UTC)
Goto Top
Hi Rubbermann,

wie kann ich denn das vor x-tagen erstellte Backup ohne delage automatisiert loeschen?

Gruss.

Steffen.
Member: rubberman
rubberman Oct 20, 2014 updated at 22:05:19 (UTC)
Goto Top
Hallo Steffen,

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"
Das 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