thomash2
Goto Top

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 ..

Content-ID: 191935

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

Ausgedruckt am: 20.11.2024 um 02:11 Uhr

jens2001
jens2001 27.09.2012 um 17:46:39 Uhr
Goto Top
Für sowas gibt es seit DOS-Zeiten das Archiv-Flag!
ThomasH2
ThomasH2 27.09.2012 um 18:02:12 Uhr
Goto Top
Zitat von @jens2001:
Für sowas gibt es seit DOS-Zeiten das Archiv-Flag!

genau dieses Archivflag möchte ich nicht verwenden, wie bereits im Eröffnungsthread erwähnt.
Die Problematik warum man dieses Flag nicht immer nutzen kann, dürfte bekannt sein und soll hier nicht weiter diskutiert werden.
pieh-ejdsch
pieh-ejdsch 27.09.2012 aktualisiert um 19:56:16 Uhr
Goto Top
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
/TS /FP /Bytes /nC /nDL /nP
zur Ordenlichen Logerstellung.
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
60730
60730 27.09.2012 aktualisiert um 20:12:02 Uhr
Goto Top
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 face-wink

Gruss
pieh-ejdsch
pieh-ejdsch 27.09.2012 aktualisiert um 20:24:27 Uhr
Goto Top
moin Timo upps - ist ja alt Gewohnheit ich meine LimboS,

ich hab aber keine FinnBlowSäuferSchüssel und demnach keine Erfahrung damit.
gibt es davon ein Image zum Laden?

Die fehlende Begrüssung und der fehlende Abschied ist mir gar net aufgefallen.

Gruß Phil
ThomasH2
ThomasH2 28.09.2012 um 17:20:23 Uhr
Goto Top
Hallo und danke für Deine Hinweise ..

Zitat von @pieh-ejdsch:
moin,

Was spricht denn gegen die Verwendung des ArchivBit?

Auf das NAS-Laufwerk greift Software zu, die das Archivbit setzt.

außerdem gibt es Programme, die das bit nicht korrekt setzen und ich möchte meine Hand nicht dafür in's Feuer legen, das das Archivbit bei > 1.Mio Files auch bei Netzwerkabbrüchen Stromausfällen etc immer zu 100% richtig steht. Dazu müsste das NAS-Filesystem transaktionsbasiert arbeiten.

googeln: archivbit wird falsch gesetzt ..

Werden diese etwa nach Aktualisierung der Daten wieder gelöscht?

nein

Oder Hast Du noch eine andere Software, welche das Bit neusetzt?

ja

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 /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.

==> Danke für den Tipp, so werde ich verfahren.

Wie im ersten Posting angegeben, habe ich
"nur die relevanten Parameter angegeben"

Die aktuellen Parameter sind momentan (noch nicht zu 100% an 4TB ausgetestet):
/TEE /E /FFT /NP /R:10 /W:30 /LOG:c:\RoboCopyLog-%date%.log /NP /NDL /XX

Damit habe ich im Log die Einträge: "Dateigröße" "neue Datei" und den "kompletten Pfad"
und kann entsprechend filtern und das Backup in einen tagesaktuellen Ordner sichern.


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


PS: Ich vergaß zu erwähnen, dass der Sicherungsserver ein altes W2k0 Überbleibsel ist, das in einem anderen Brandschutzabschnitt steht. Das Gerät wird demnächst stillgelegt und durch ein SAN ersetzt.
Wäre dort VSS möglich, würde ich es auch nicht nutzen wollen/können, da auf dem System eine Textindizierung läuft. Ich wollte keine Romane schreiben und war etwas in Eile und habe die Etikette vergessen face-wink

Gruß Thomas
60730
60730 28.09.2012 aktualisiert um 18:12:23 Uhr
Goto Top
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...
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...
60730
60730 28.09.2012 aktualisiert um 22:33:45 Uhr
Goto Top
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...

: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:\>
nix gemacht -nix passiert


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:\>
Gruß
pieh-ejdsch
pieh-ejdsch 29.09.2012 um 16:04:49 Uhr
Goto Top
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.

@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