Discussion:
Mit Robocopy einzelne Verzeichnisse verschieben
(zu alt für eine Antwort)
Janni
2009-02-26 16:27:04 UTC
Permalink
Hallo,

ich habe folgendes Problem. Ich habe auf einem MS Server 2003 ein
Share-Verzeichnis, in welchem sich ca. 100 Unterverzeichnisse von
100 Benutzern befinden. Jedes Verzeichnis hat spezielle unterschiedliche
NTFS-Rechte (Rechte des jeweiligen Benutzers). Einzelne Freigaben existieren
für diese 100 Verz. nicht. Nun möchte ich einige (nicht alle!) dieser
Benutzer-
Homeverzeichnisse auf dem selben Server in ein anderes Verz. verschieben.
Die NTFS-Rechte jedes der Home-Benutzerverz. soll erhalten bleiben.
Nun habe ich versucht dies mit ROBOCOPY zu realisieren, habe aber aber
ein Problem. Wenn ich als Quelle das erste Verzeichnis auswähle und es
dann mit "/Move /E" in einen anderen Zielordner verschieben will, dann
werden nur
die Dateien und Verz. unterhalb des Quellordners verschoben. Der
Quellordner des Home-Benutzerverz. selbst geht verloren. Nun könnte man vorher
im Zielverz. alle Homeordner händisch erstellen und die Rechte zuweisen, was
aber bei ca. 50 Verz. ein Riesenaufwand bedeutet.
Gibt es nicht eine Möglichkeit, mit diversen Parametern ausgewählte
ganze Quellordner in den Zielordner zu verschieben? Wenn für jedes
Home-Verz. ein ROBOCOPY-Befehl genutzt werden müßte, wäre das
für mich o.k. Aber ich möchte nicht unbedingt VORHER alle Home-Basisverz.
im Zielordner manuell erstellen müssen.
Auch das Verschieben aller Unterorner ab Share-Verz. ist NICHT
gewünscht.
Auch das "Ausschneiden" und "Einfügen" via Explorer funktioniert nicht,
da die einzelnen unterschiedlichen Rechte verloren gehen.

Danke im Voraus.

Gruss janni
Tobias Redelberger (MVP -SBS)
2009-02-27 14:33:06 UTC
Permalink
Hi Janni,
Post by Janni
Auch das Verschieben aller Unterorner ab Share-Verz. ist NICHT
gewünscht.
Wieso? - s.u.
Post by Janni
ich habe folgendes Problem. Ich habe auf einem MS Server 2003 ein
Share-Verzeichnis, in welchem sich ca. 100 Unterverzeichnisse von
100 Benutzern befinden. Jedes Verzeichnis hat spezielle unterschiedliche
NTFS-Rechte (Rechte des jeweiligen Benutzers). Einzelne Freigaben existieren
für diese 100 Verz. nicht.
Nun möchte ich einige (nicht alle!) dieser Benutzer-
Homeverzeichnisse auf dem selben Server in ein anderes Verz. verschieben.
Die NTFS-Rechte jedes der Home-Benutzerverz. soll erhalten bleiben.
Annahme: "anderes Verz." auf selben Volumen

Tip: Verschieben innerhalb eines Volumens z.B. mit dem Windows Explorer
BEHÄLT die NTFS-Rechte. Also, wieso so kompliziert? Drag/Drop bzw.
Cut/Paste..

Hinweis: Sollte der Platz auf dem Array/Volumen dafür nicht mehr ausreichen,
kannst Du mittels dynamischer Arrayerweiterung Deines RAID-Controllers und
dann mittels "diskpart->list->select->expand" bzw. ab Windows Server 2008
mittels GUI Dein Volumen erweitern.


Annahme: "anderes Verz." auf anderem Volumen

Tip: Backup/Restore in anderes Verzeichnis auf anderen Volumen

Evtl: besser: Backup/Restore auf größer angelegtes bzw. erweitertes Array

Vorteil Backup/Restore: Sollte etwas beim "Verschieben" schief gehen, hat
man immer noch ein Backup.. ;)


Oder hast Du uns etwas verschwiegen bzw. falsch erklärt?
--
Tobias Redelberger
StarNET Services (HomeOffice)
Schoenbornstr. 57
D-97440 Werneck
Tel: +49 (9722) 4835
Mobil: +49 (163) 84 74 421
Email: ***@starnet-services.net
Web: http://www.starnet-services.net
Hardy Elis
2009-02-27 06:52:00 UTC
Permalink
Post by Janni
Hallo,
ich habe folgendes Problem. Ich habe auf einem MS Server 2003 ein
Share-Verzeichnis, in welchem sich ca. 100 Unterverzeichnisse von
100 Benutzern befinden. Jedes Verzeichnis hat spezielle unterschiedliche
NTFS-Rechte (Rechte des jeweiligen Benutzers). Einzelne Freigaben existieren
für diese 100 Verz. nicht. Nun möchte ich einige (nicht alle!) dieser
Benutzer-
Homeverzeichnisse auf dem selben Server in ein anderes Verz. verschieben.
Die NTFS-Rechte jedes der Home-Benutzerverz. soll erhalten bleiben.
Nun habe ich versucht dies mit ROBOCOPY zu realisieren, habe aber aber
ein Problem. Wenn ich als Quelle das erste Verzeichnis auswähle und es
dann mit "/Move /E" in einen anderen Zielordner verschieben will, dann
werden nur
die Dateien und Verz. unterhalb des Quellordners verschoben. Der
Quellordner des Home-Benutzerverz. selbst geht verloren. Nun könnte man vorher
im Zielverz. alle Homeordner händisch erstellen und die Rechte zuweisen, was
aber bei ca. 50 Verz. ein Riesenaufwand bedeutet.
Gibt es nicht eine Möglichkeit, mit diversen Parametern ausgewählte
ganze Quellordner in den Zielordner zu verschieben? Wenn für jedes
Home-Verz. ein ROBOCOPY-Befehl genutzt werden müßte, wäre das
für mich o.k. Aber ich möchte nicht unbedingt VORHER alle Home-Basisverz.
im Zielordner manuell erstellen müssen.
Auch das Verschieben aller Unterorner ab Share-Verz. ist NICHT
gewünscht.
Auch das "Ausschneiden" und "Einfügen" via Explorer funktioniert nicht,
da die einzelnen unterschiedlichen Rechte verloren gehen.
Danke im Voraus.
Gruss janni
Hallo Janni,
ich würde es ganz einfach und in 5 sekunden via (unregistrierten und
kostenfreien) TotalCommander machen. Vielleicht kennst du das praktische
Tool, ansonsten mal eine Suchmaschine bemühen. Dort einfach die zu
verschiebenden Verzeichnisse anwählen (rechte Maus) und via "Verscheiben"
Befehl UND! aktiviertem Käckchen "Kopiere NTFS-Permissions" die Ordner
verschieben.

VG Hardy
Janni
2009-02-27 07:11:01 UTC
Permalink
Hallo Hardy,
Post by Hardy Elis
Hallo Janni,
ich würde es ganz einfach und in 5 sekunden via (unregistrierten und
kostenfreien) TotalCommander machen. Vielleicht kennst du das praktische
Tool, ansonsten mal eine Suchmaschine bemühen. Dort einfach die zu
verschiebenden Verzeichnisse anwählen (rechte Maus) und via "Verscheiben"
Befehl UND! aktiviertem Käckchen "Kopiere NTFS-Permissions" die Ordner
verschieben.
danke für den Tip. Aber ich hatte da eher an eine Batch gedacht, die die
einzelnen Verz. verschiebt. Die Verz. exportiere ich via "DIR >liste.txt",
lese diese in EXCEL ein und füge für die entspr. zu verschiebenden Ordner
spaltenweise den MOVE ein. Zum Schluss exportiere ich das Ganze als
ACSII-Text und editiere es nochmal kurz.
Zum Verschieben nutze ich nun MOVE, da bleiben die Rechte erhalten.

Trotzdem Danke.

Gruss Janni
Andreas Sturma
2009-03-01 09:29:30 UTC
Permalink
Hi Janni,

[..]
Post by Janni
danke für den Tip. Aber ich hatte da eher an eine Batch gedacht, die
die einzelnen Verz. verschiebt. Die Verz. exportiere ich via "DIR
liste.txt", lese diese in EXCEL ein und füge für die entspr. zu
verschiebenden Ordner spaltenweise den MOVE ein. Zum Schluss
exportiere ich das Ganze als ACSII-Text und editiere es nochmal kurz.
Zum Verschieben nutze ich nun MOVE, da bleiben die Rechte erhalten.
du kannst es mit robocopy tun, musst jedoch tiefer einsteigen.
Das Ganze ist von http://dr-luthardt.de/down.htm
Bevor ich eine Datei einstelle kopiere ich dir den Text komplett:




robocopy
In Windows und auf den Webseiten von Microsoft findet sich manches
Programm, dass zu unrecht ein Schattendasein fristet. Zu den
ausgesprochenen Schätzen gehört robocopy, ein Kopierprogramm für die
Konsole, dessen Möglichkeiten bis zu einer automatischen und permanenten
Syncronisation von Verzeichnissen und Partitionen reichen.

Für das Kopieren sehr großer Ordner und Dateien (ab etwa 500 MB) oder
das Kopieren über das Netzwerk ist es selbst für den Privatnutzer
unverzichtbar, denn Drag & Drop großer Dateien im Explorer funktioniert
nicht gut bis hin zum Hängenbleiben des Kopiervorgangs, und im Netz
bricht das Kopieren wegen kurzzeitiger Unterbrechungen oft genug ab.

Das Programm robocopy.exe samt Dokumentation ist Bestandteil
verschiedener Microsoft Resource Kits; die neueste Version 10 findet
sich in den frei zugänglichen Windows Server 2003 Resource Kit Tools.
Statt auf einem XP Einzelplatzrechner die dort längst nicht alle
einsetzbaren Tools komplett zu installieren, können Sie mitdie beiden
Dateien robocopy.exe und robocopy.doc aus dem msi-Installerpaket
extrahieren. Zweckmäßigerweise legen Sie die robocopy.exe im
Windows-Ordner (meist C:\Windows) ab, um ohne explizite Pfadangabe
darauf zugreifen zu können.

Es ist unbedingt sinnvoll, vor dem produktiven Einsatz des Programms die
Dokumentation zu lesen und etwas zu experimentieren!
Den Einstieg in die Benutzung von robocopy erleichtern einige Batch- und
Jobdateien im Archiv robocopy.zip. Entpacken Sie alle Dateien in einen
Ordner. Sie finden darin die Dateien

a.. COPY.RCJ: Jobdatei zum Kopieren neuer Dateien,

b.. COPYR.RCJ: Jobdatei zum Kopieren neuer Dateien und Ordner
(rekursiv),

c.. MIRD.RCJ: Jobdatei zum Spiegeln von Ordnern (Directory),

d.. MIRV.RCJ: Jobdatei zum Spiegeln von Partitionen (Volumes),

e.. rcopy.cmd: eine Hilfedatei,

f.. rcopydir.cmd: Batchdatei zum Kopieren eines Ordners,

g.. robocopy: Konsolenstart (Verknüpfung) und

h.. upsync.cmd: Batchdatei zum Abgleichen zweier Verzeichnisse.

Starten Sie die Konsole mit Doppelklick auf die Verknüpfung robocopy.
Sie bekommen eine kleine Hilfe zu robocopy allgemein, die als
Gedächtnisstütze gedacht ist, und den Batchdateien rcopydir und upsync
angezeigt. Beachten sie, dass sich die robocopy-Syntax von der anderer
copy-Befehle unterscheidet, und Spiegeln ist hier nicht im Sinne eines
Images zu verstehen sondern als spezieller Kopiervorgang.

Einige Anwendungsbeispiele:

robocopy C:\einOrdner\UnterOrdner D:\einAndererOrdner
/job:copyr
Kopiert alle neuen Dateien und Ordner aus C:\...\UnterOrdner in den
vorhandenen Ordner D:\einAndererOrdner.

robocopy C:\einOrdner\UnterOrdner D:\einAndererOrdner
text.txt /move /job:copy
Verschiebt nur die Datei text.txt aus C:\...\UnterOrdner in den
vorhandenen Ordner D:\einAndererOrdner.

robocopy D:\ H:\Backup /job:mirv
Spiegelt die Partition D:\ in den Ordner Backup auf Laufwerk H: ,
robocopy D:\Daten H:\Daten /job:mird
spiegelt die Ordner "Daten".

upsync D:\Daten\Rechnungen \\bureau\Rechnungen
Gleicht die Ordner Rechnungen auf dem eigenen PC und dem PC "bureau"
unter gegenseiter Vervollständigung ab.

rcopydir D:\Daten\Rechnungen H:\Backups /job:copy
Kopiert den Ordner Rechnungen ohne Unterordner von D:\Daten komplett
nach H:\Backups\Rechnungen.

rcopydir D:\ E:\ /job:copyr /XF *.*
Kopiert nur die Ordnerstruktur von D:\ auf E:\.

In den Jobdateien sind sinnvolle Vorgaben für die Kopiervorgänge
zusammengefasst und sie leiten die Ausgabe des Programms in Logdateien
jobname.log um. Schauen Sie in die Job- und Logdateien mit einem Editor
hinein.

Wenn Sie ein Volume spiegeln, achten Sie darauf, dass auf diesem
möglichst keine gelockten Dateien oder solche, auf die der angemeldete
Benutzer keine Zugriffsrechte hat, vorhanden sind. Robocopy übergeht
diese Dateien, wartet jedoch mit den Jobvorgaben an solchen Dateien 60
s. Ohne die Jobvorgaben, also per default, würde robocopy jedesmal
30.000.000 s warten! (Upsync benutzt die copyr.rcj Jobdatei.)
Der Ordner, aus dem robocopy startet, sollte sich zweckmäßigerweise auf
einem anderen Volume befinden.

Insgesamt bis zu drei weitere robocopy-Parameter – wie im letzten
Beispiel /XF *.* – lassen sich den Batchdatei-Aufrufen upsync und
rcopydir zusätzlich zum /job-Parameter hinzufügen. Mit z. B. /TEE
erreichen Sie die Ausgabe der robocopy-Mitteilungen zusätzlich zur
Logdatei ins Konsolenfenster.

Mit robocopy können Sie die praktisch erreichbare Datentransferrate
zwischen zwei Laufwerken ermitteln. Kopieren Sie z. B. einen Ordner mit
etwa 100 MB Inhalt, aber ohne Unterordner, von Ihrer Festplatte auf
einen USB-Stick, und Sie wissen, ob die USB-Schnittstelle des Rechners
und/oder der Stick tatsächlich USB High-Speed unterstützen! Am
bequemsten tun Sie das mit rcopydir. In der Logdatei rcopydir.log finden
Sie anschließend die Transfergeschwindigkeit.

Last, but not least ersetzt Robocopy manches kommerzielle oder
Shareware-Programm, dessen Anschaffung überflüssig ist, wenn man sich
ein wenig mit der Konsole beschäftigt.
--
Andreas Sturma
Loading...