Robocopy unter Beibehaltung alter Dateiversionen ausführen
Auf einem SAMBA NAS befinden sich die zu sichernden Dateien.
Gesichert werden soll nachts mit robocopy (rsync möchte ich nicht einsetzen)
auf einem Windows Server ohne die alten Dateien zu überschreiben
Bei den Files handelt es sich vorwiegend um .doc, .xls, .cpp und .h Files,
die unter Umständen täglich geändert werden und von denen ich eine Versionierung hätte.
D.h., Robocopy müsste die alten Files umbenennen (habe dazu keine Option gefunden)
oder die Sicherung in ein neues Verzeichnis mit dem Namen %date% schreiben:
Quellverzeichnis Zielverzeichnis(e)
\\NAS\DatenDVZ D:\DatenDVZ\20120920
D:\DatenDVZ\20120921
D:\DatenDVZ\20120922
..
Wie ein Verzeichnis mit dem aktuellen Datum zu erstellen ist, ist klar, aber wie verhindert
man, dass in den aktuellen Zielordner alle Files geschrieben werden?
Kopiert wird ganz normal in der Form (nur die relevanten Parameter angegeben):
robocopy "\\NAS\DatenDVZ" "D:\DatenDVZ\20120922" /S /FFT /NP /R:10 /W:30
Man könnte sicherlich auch nur die Dateien kopieren, die ein gesetztes Archivbit haben und selbiges nach dem Kopieren zurücksetzten. Diese Möglichkeit ist mir aber zu unsicher.
Danke ..
Gesichert werden soll nachts mit robocopy (rsync möchte ich nicht einsetzen)
auf einem Windows Server ohne die alten Dateien zu überschreiben
Bei den Files handelt es sich vorwiegend um .doc, .xls, .cpp und .h Files,
die unter Umständen täglich geändert werden und von denen ich eine Versionierung hätte.
D.h., Robocopy müsste die alten Files umbenennen (habe dazu keine Option gefunden)
oder die Sicherung in ein neues Verzeichnis mit dem Namen %date% schreiben:
Quellverzeichnis Zielverzeichnis(e)
\\NAS\DatenDVZ D:\DatenDVZ\20120920
D:\DatenDVZ\20120921
D:\DatenDVZ\20120922
..
Wie ein Verzeichnis mit dem aktuellen Datum zu erstellen ist, ist klar, aber wie verhindert
man, dass in den aktuellen Zielordner alle Files geschrieben werden?
Kopiert wird ganz normal in der Form (nur die relevanten Parameter angegeben):
robocopy "\\NAS\DatenDVZ" "D:\DatenDVZ\20120922" /S /FFT /NP /R:10 /W:30
Man könnte sicherlich auch nur die Dateien kopieren, die ein gesetztes Archivbit haben und selbiges nach dem Kopieren zurücksetzten. Diese Möglichkeit ist mir aber zu unsicher.
Danke ..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 191935
Url: https://administrator.de/forum/robocopy-unter-beibehaltung-alter-dateiversionen-ausfuehren-191935.html
Ausgedruckt am: 22.12.2024 um 21:12 Uhr
9 Kommentare
Neuester Kommentar
moin,
Was spricht denn gegen die Verwendung des ArchivBit?
Werden diese etwa nach Aktualisierung der Daten wieder gelöscht?
Oder Hast Du noch eine andere Software, welche das Bit neusetzt?
Problem damit? Na erzähl mal!
Wenn Du das Bit nicht nutzen willst, dann nutze die Parameter in Robocopy
Werte vor jedem Backupvorgang das Log (welches von der Letzten Vollsicherung bis zum letzten/a bzw. /m Backup ach das nutzt Du ja nicht! also zur letzten Teilsicherung geführt wurde) aus und entsprechend dem Alter bzw Größe sicherst Du die Daten.
Auf der ganz sicheren Seite bist Du dann, wenn Du jede potenziell zu sichernde Datei in allen Sicherungen abgleichst und danach in die Tagesicherung packst.
Wie soetwas Ansatzweise Auszuwerten ist, steht hier:
Robocopy Eine Quelle - Mehrere Festplatten
Gruß Phil
Was spricht denn gegen die Verwendung des ArchivBit?
Werden diese etwa nach Aktualisierung der Daten wieder gelöscht?
Oder Hast Du noch eine andere Software, welche das Bit neusetzt?
Problem damit? Na erzähl mal!
Wenn Du das Bit nicht nutzen willst, dann nutze die Parameter in Robocopy
/TS /FP /Bytes /nC /nDL /nP
zur Ordenlichen Logerstellung.Werte vor jedem Backupvorgang das Log (welches von der Letzten Vollsicherung bis zum letzten
Auf der ganz sicheren Seite bist Du dann, wenn Du jede potenziell zu sichernde Datei in allen Sicherungen abgleichst und danach in die Tagesicherung packst.
Wie soetwas Ansatzweise Auszuwerten ist, steht hier:
Robocopy Eine Quelle - Mehrere Festplatten
Gruß Phil
Moin phil
Warum so aufwendig?
Das geht viel einfacher, wenn das ziel eine winblowsserver buexse ist.
Wie?
Hab ich genauso vergessen wie der to den gruss und die os versionen.
Ps: ganz schoen schattig hier im kopie fred
Gruss
Warum so aufwendig?
Das geht viel einfacher, wenn das ziel eine winblowsserver buexse ist.
Wie?
Hab ich genauso vergessen wie der to den gruss und die os versionen.
Ps: ganz schoen schattig hier im kopie fred
Gruss
Moin,
Naja dann....
Xcopy kann kopieren und so tun als ob.
Kann robocopy auch, aber nicht so schoen.
Diese kopieraktion schreibst du in eine datei.
Nutze xcopy /? Und du findest sowas wie d und l als parameter.
Damit hast du eine liste,welche dateien neuer sind und die klapperst du dann der reihe nach ab und das in einen neuen ordner.
Lach nein das ware zu einfach, du musst die dateien in einen ordner heute verschieben, die alter sind und erst dann die neuen hinlegen, denn der naechste tag kommt bestimmt.
Und damit da nix schief lauft, musst du einige tricks durchkaspern...
@ pietsch muss mir mal deine strategie durchlesen.
Gruss
Ps:
Naja dann....
Xcopy kann kopieren und so tun als ob.
Kann robocopy auch, aber nicht so schoen.
Diese kopieraktion schreibst du in eine datei.
Nutze xcopy /? Und du findest sowas wie d und l als parameter.
Damit hast du eine liste,welche dateien neuer sind und die klapperst du dann der reihe nach ab und das in einen neuen ordner.
Lach nein das ware zu einfach, du musst die dateien in einen ordner heute verschieben, die alter sind und erst dann die neuen hinlegen, denn der naechste tag kommt bestimmt.
Und damit da nix schief lauft, musst du einige tricks durchkaspern...
Skizze
Quelle und ziel werden "falsch" gemappt.
Quelle hat laufwerk z und ziel q
Xcopy erzeugt liste z nach q
Laufwerke werden neu verbunden am besten, mit dem dir vergleichen, ob der datentraeger stimmt.
Ein ordner heute wird erstellt und als laufwerk z gemappt.
Anhand der xcopy liste werden die dateien von q nach z gemovt.
Wenn fertig werden die laufwerke umgemappt oder gesubstet und robocopy q nach z
@ pietsch muss mir mal deine strategie durchlesen.
Gruss
Ps:
Ich wollte keine Romane schreiben und war etwas in Eile und habe die Etikette vergessen.
Tja und ich wollte vor laaaaaanger zeit mal nen roman schreiben und jetzt ist der Tommy J. aus K. Schon wieder schneller fertig als wie ich...
salue,
nicht hybsch, sicherlich nicht schnell ohne robocopy, weil mein altes rausgekramtes libretto 100ct kein robocopy kann, aber laüft mit 233 mhz und ner pATA Platte...
nix gemacht -nix passiert
Gruß
nicht hybsch, sicherlich nicht schnell ohne robocopy, weil mein altes rausgekramtes libretto 100ct kein robocopy kann, aber laüft mit 233 mhz und ner pATA Platte...
:para
subst q: d:\demo\quelle
subst z: d:\demo\ziel
for /f "tokens=1-3 delims=. " %%a in ('date /t') do set heute=%%c_%%b_%%a
xcopy /y /l /s /d q:\*.* z:\>C:\script\ycopy\ycopy.txt
for /f "delims=" %%a in ('findstr ":" C:\script\ycopy\ycopy.txt') do (
echo d|xcopy "z:%%~pnxa" "z:\%heute%%%~pnxa"
echo d|xcopy /y "q:%%~pnxa" "z:%%~pnxa"
)
:end
rem die entsubster sind erst nach der demo dazugekommen...
subst q: /d
subst z: /d
Z:\>C:\script\ycopy\yxopy.cmd
Z:\>subst q: E:\demo\quelle
Z:\>subst z: E:\demo\ziel
Laufwerk bereits mit SUBST zugewiesen
Z:\>for /F "tokens=1-3 delims=. " %a in ('date /t') do set heute=%c_%b_%a
Z:\>set heute=2012_09_28
Z:\>xcopy /y /l /s /d q:\*.* z:\ 1>C:\script\ycopy\ycopy.txt
Z:\>for /F "delims=" %a in ('findstr ":" C:\script\ycopy\ycopy.txt') do (
echo d | xcopy "z:%~pnxa" "z:\2012_09_28%~pnxa"
echo d | xcopy /y "q:%~pnxa" "z:%~pnxa"
)
Z:\>
Z:\>echo hallo otto>>E:\demo\quelle\demo.txt
- Dem Otto Hallo geschrieben und...
Z:\>C:\script\ycopy\yxopy.cmd
Z:\>subst q: E:\demo\quelle
Laufwerk bereits mit SUBST zugewiesen
Z:\>subst z: E:\demo\ziel
Laufwerk bereits mit SUBST zugewiesen
Z:\>for /F "tokens=1-3 delims=. " %a in ('date /t') do set heute=%c_%b_%a
Z:\>set heute=2012_09_28
Z:\>xcopy /y /l /s /d q:\*.* z:\ 1>C:\script\ycopy\ycopy.txt
Z:\>for /F "delims=" %a in ('findstr ":" C:\script\ycopy\ycopy.txt') do (
echo d | xcopy "z:%~pnxa" "z:\2012_09_28%~pnxa"
echo d | xcopy /y "q:%~pnxa" "z:%~pnxa"
)
Z:\>(
echo d | xcopy "z:\demo.txt" "z:\2012_09_28\demo.txt"
echo d | xcopy /y "q:\demo.txt" "z:\demo.txt"
)
Z:\2012_09_28\demo.txt überschreiben (Ja/Nein/Alle)? d
Z:\2012_09_28\demo.txt überschreiben (Ja/Nein/Alle)?
Z:\2012_09_28\demo.txt überschreiben (Ja/Nein/Alle)?
Z:\2012_09_28\demo.txt überschreiben (Ja/Nein/Alle)?
Z:\2012_09_28\demo.txt überschreiben (Ja/Nein/Alle)? Q:\demo.txt
1 Datei(en) kopiert
- gegenbeweis:
Z:\>fc /b Q:\demo.txt Z:\demo.txt
Vergleichen der Dateien E:\DEMO\QUELLE\demo.txt und Z:\DEMO.TXT
FC: Keine Unterschiede gefunden
Z:\>fc /b Q:\quelle\demo.txt Z:\2012_09_28\demo.txt
Vergleichen der Dateien Q:\QUELLE\demo.txt und Z:\2012_09_28\DEMO.TXT
FC: E:\demo.txt ist länger als Z:\2012_09_28\DEMO.TXT
Z:\>
moin Limbo.S,
Deine Variante setzt aber sehr viel Kapazität um.
ich hab mal ein bisschen daran herumgeschraubt.
Damit immer ein Delta nur vom letzten Backup aus geht.
Deine Variante setzt aber sehr viel Kapazität um.
ich hab mal ein bisschen daran herumgeschraubt.
Damit immer ein Delta nur vom letzten Backup aus geht.
@echo off
setlocal
:: echo on
:para
set "Dateien=*.*"
set "Q=q:"
set "Z=z:"
subst %Q% d:\demo\quelle ||exit /b 1
subst %Z% d:\demo\ziel ||exit /b 2
for %%i in (nextB lastDir ) do set "%%i="
for /f "tokens=1-3 delims=. " %%a in ('date /t') do set heute=%%c_%%b_%%a
for /d %%i in ("Z:\????_??_??" ) do set "lastDir=%%~nxi" &for /f "tokens=1-3delims=_" %%i in ("%%~nxi") do set "nextB=%%j-%%k-%%i"
if not defined lastDir goto :Full
xcopy /y /l /s /d:%nextB% %Q%\%Dateien% "%Z%\%lastDir%" |find /i "%Q%">"%temp%\%~n0%heute%.txt"
for /f usebackqdelims^= %%i in ("%temp%\%~n0%heute%.txt" ) do xcopy /LyD "%Q%\%%~pnxi" "%Z%\%lastDir%%%~pi*" |findstr /b "1 " >nul && xcopy /yD "%Q%\%%~pnxi" "%Z%\%heute%%%~pi*" |find /i "%Q%"
goto :end
:Full
xcopy "Q:\%Dateien%" "Z:\%heute%\*"
:end
rem die entsubster sind erst nach der demo dazugekommen...
subst %Q% /d
subst %Z% /d