albertminrich
Goto Top

Robocopy - Änderungen nicht auf Original-Destination kopieren?

Hallo,

folgendes Vorgehen.

Ich mache ein robocopy:
"robocopy c:\Quelle d:\Originalziel /e"

Wenn ich jetzt das gleiche robocopy ein zweites Mal ausführe, werden ja nur noch die geänderten Dateien übertragen. So soll es auch sein, allerdings möchte ich, daß diese (die geänderten Dateien) nicht nach d:\Originalziel kopiert werden (und damit die alten Dateien überschreiben), sondern nach d:\Alternativziel.
Ist das möglich?

Ich kenne die Parameter a und m, die kann ich aber nicht verwenden.

Danke
Gruß
Martin

Content-ID: 238317

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

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

ticuta1
ticuta1 16.05.2014 um 13:14:13 Uhr
Goto Top
Lochkartenstanzer
Lochkartenstanzer 16.05.2014 aktualisiert um 16:39:34 Uhr
Goto Top
Zitat von @AlbertMinrich:

Ich mache ein robocopy:
"robocopy c:\Quelle d:\Originalziel /e"

... allerdings möchte ich, daß diese (die geänderten Dateien) nicht nach d:\Originalziel kopiert
werden ... sondern nach d:\Alternativziel.
Ist das möglich?

robocopy d:\originalziel d:\Alternativziel /mir
robocopy c:\Quelle d:\alternativziel /e
AlbertMinrich
AlbertMinrich 16.05.2014 aktualisiert um 20:24:10 Uhr
Goto Top
Zitat von @Lochkartenstanzer:

> Zitat von @AlbertMinrich:
>
> Ich mache ein robocopy:
> "robocopy c:\Quelle d:\Originalziel /e"
>
> ... allerdings möchte ich, daß diese (die geänderten Dateien) nicht nach d:\Originalziel kopiert
> werden ... sondern nach d:\Alternativziel.
> Ist das möglich?

> robocopy d:\originalziel d:\Alternativziel /mir
> robocopy c:\Quelle d:\alternativziel /e
> 

Danke, aber das ist nicht das, was ich will. Damit hab ich praktisch zwei Vollkopien. Die erste auf Originalziel, die zweite auf Alternativziel. Wobei mir nicht klar ist, wofür das robocopy von originalziel nach alternativziel gut sein soll. Lässt man den weg, bleibt das Ergebnis das gleiche.

Ich will folgendes erreichen. mal angenommen, in C:\Quelle gibt es 3 Dateien:
datei1
datei2
datei3

Nach dem ersten robocopy ("robocopy c:\Quelle d:\Originalziel /e") gibt es in D:\Originalziel die gleichen drei Dateien.
Jetzt ändert sich in der Quelle die datei2. Nach dem nächsten robocopy will ich in D:\Alternativziel nur datei2 haben.
Mit dem Befehl
"robocopy c:\Quelle d:\Alternativziel /e /a"
bzw. auch mit
"robocopy c:\Quelle d:\Alternativziel /e /m"
würde ich genau das gewünschte erreichen.
/a = Kopiert nur Dateien mit dem "Archive"-Attribut.
/b = Kopiert nur Dateien mit dem "Archive"-Attribut und setzt das Attribut zurück.

Aber da es sich bei der Quelle um einen Linuxserver handelt, funktioniert das nicht mit den Archive-Attribut. Ich bin kein Linuxler, ich weiß nicht, ob es bei Linux generell kein Archiv-Attribut gibt, aber auf jeden Fall nicht bei meinem Linuxserver

@ticuta1
Ich kenn den robocopy-Befehl eigentlich ziemlich gut. Anleitungen sind mir bekannt. Meiner Meinung nach geht das von mir gewünschte nicht, aber vielleicht hab ich ja was übersehen.

Gruß
Martin
Lochkartenstanzer
Lochkartenstanzer 17.05.2014 um 11:41:29 Uhr
Goto Top
Zitat von @AlbertMinrich:


Danke, aber das ist nicht das, was ich will. Damit hab ich praktisch zwei Vollkopien. Die erste auf Originalziel, die zweite auf
Alternativziel. Wobei mir nicht klar ist, wofür das robocopy von originalziel nach alternativziel gut sein soll. Lässt
man den weg, bleibt das Ergebnis das gleiche.

Ich will folgendes erreichen. mal angenommen, in C:\Quelle gibt es 3 Dateien:
datei1
datei2
datei3

Nach dem ersten robocopy ("robocopy c:\Quelle d:\Originalziel /e") gibt es in D:\Originalziel die gleichen drei
Dateien.
Jetzt ändert sich in der Quelle die datei2. Nach dem nächsten robocopy will ich in D:\Alternativziel nur datei2 haben.
Mit dem Befehl
"robocopy c:\Quelle d:\Alternativziel /e /a"
bzw. auch mit
"robocopy c:\Quelle d:\Alternativziel /e /m"
würde ich genau das gewünschte erreichen.
/a = Kopiert nur Dateien mit dem "Archive"-Attribut.
/b = Kopiert nur Dateien mit dem "Archive"-Attribut und setzt das Attribut zurück.

Aber da es sich bei der Quelle um einen Linuxserver handelt, funktioniert das nicht mit den Archive-Attribut. Ich bin kein
Linuxler, ich weiß nicht, ob es bei Linux generell kein Archiv-Attribut gibt, aber auf jeden Fall nicht bei meinem
Linuxserver

@ticuta1
Ich kenn den robocopy-Befehl eigentlich ziemlich gut. Anleitungen sind mir bekannt. Meiner Meinung nach geht das von mir
gewünschte nicht, aber vielleicht hab ich ja was übersehen.

Gruß
Martin

Du sagtest Doch selber, daß Du die originaldateien behalten willst.

lks
bastla
bastla 18.05.2014 um 18:36:47 Uhr
Goto Top
Hallo AlbertMinrich!

Unter Verwendung von "xcopy" etwa so:
@echo off & setlocal
set "Quelle=C:\Quelle"  
set "Ziel1=D:\Originalziel"  
set "Ziel2=D:\Alternativziel"  
for /f "delims=" %%i in ('xcopy /deyL "%Quelle%" "%Ziel1%"^|findstr /ev "kopiert"') do call :ProcessFile "%%i"  
goto :eof

:ProcessFile
set "RelPath=%~dp1"  
call set "RelPath=%%RelPath:%Quelle%\=%%"  
echo xcopy /dy %1 "%Ziel2%\%RelPath%"  
goto :eof
- geht dann allerdings nur einzeln für jede Datei und dementsprechend eher gemächlich.

In Zeile 11 steht übrigens vorweg ein "echo" zum gefahrlosen Testen ...

Grüße
bastla
AlbertMinrich
AlbertMinrich 21.05.2014 um 12:04:04 Uhr
Goto Top
Zitat von @bastla:

Hallo AlbertMinrich!

Unter Verwendung von "xcopy" etwa so:
@echo off & setlocal
> set "Quelle=C:\Quelle"  
> set "Ziel1=D:\Originalziel"  
> set "Ziel2=D:\Alternativziel"  
> for /f "delims=" %%i in ('xcopy /deyL "%Quelle%" "%Ziel1%"^|findstr /ev  
> "kopiert"') do call :ProcessFile "%%i"  
> goto :eof
> 
> :ProcessFile
> set "RelPath=%~dp1"  
> call set "RelPath=%%RelPath:%Quelle%\=%%"  
> echo xcopy /dy %1 "%Ziel2%\%RelPath%"  
> goto :eof
> 
- geht dann allerdings nur einzeln für jede Datei und dementsprechend eher gemächlich.

Danke für die Mühe, aber es geht um einen ziemlichen großen Datenbestand. Das dauert mit robocopy schon ziemlich lange.
Ich bin aber noch am probieren mit robocopy und den Parametern maxage und minage. Wenn ich die gleichzeitig verwende, sollte es doch möglich sein, nur die an einem bestimmten Tag geänderten Dateien zu kopieren.
"robocopy c:\Quelle d:\Alternativziel /e /maxage:20140521 /minage:20140521"
AlbertMinrich
AlbertMinrich 27.05.2014 um 17:27:46 Uhr
Goto Top
Nur der Vollständigkeit halber. Ich mach es jetzt so, daß ich zuerst alle Daten per robocopy auf einen Windows-Server kopiere mit den Parametern "/mir" und "/A+:A".
robocopy \\linuxserver\quelle \\windowsserver\spiegel /mir /A+:A

Dadurch wird bei allen kopierten Dateien das Archivbit gesetzt. Und nachdem ich dann auf einem Windows-Server einen Spielgel der Daten hab, verwende ich diesen Spiegel als neue Quelle und kann, wie gewohnt, mit dem Parameter "/m" arbeiten.
robocopy \\windowsserver\spiegel \\windowsserver\backup_date /e /m

Beim ersten Lauf gibt das ein Fullbackup, bei allen weiteren ein inkrementelles.

Ist zwar auch nicht die allerbeste Lösung, weil ich erstmal den doppelten Speicherplatz vorhalten muß, aber was besseres fällt mir im Moment nicht ein.

Gruß
Martin
Lochkartenstanzer
Lochkartenstanzer 27.05.2014 aktualisiert um 18:22:48 Uhr
Goto Top
Zitat von @AlbertMinrich:

robocopy \\linuxserver\quelle \\windowsserver\spiegel /mir /A+:A

Du könntest das kopieren natürlich auch vom linuxserver aus machen, grob etwa so:

mount -t smbfs //windowsserver/spiegel /mnt/windowsserver
cp -avn /pfad/zu/quelle/. /mnt/windowsserver
umount /mnt/windowsserver/

Damit hast Du genau das was du haben willst (denke ich).

lks