Vor zwei Tagen bin ich auf ein Problem gestoßen, welches ich euch nicht vorenthalten möchte. Ziel war es, Dateien (inkl. Berechtigungen) von einem Server 2003 auf einen Server 2008 zu kopieren.
Dazu benutzt man das Tool Robocopy welches beim Server 2008/Vista/Windows 7 standartmäßig installiert ist und sich im system32 Verzeichnis befindet. Eigentlich reicht es wenn man folgendes in der cmd auf dem Server 2008 eingibt:
robocopy [source] [destination] /copyall /R:0 /W:0
Robocopy kopierte auch brav die Datein von A nach B, nur leider fehlen auf wundersame Weise die Berechtigungen. Auf dem Server 2003 funktionierte das Script aber ohne Fehler. Das kann doch nicht sein, dass ich das Script auf einem Server 2003 ausführen muss, damit er die Berechtigungen übernimmt?
Nachdem ich längere Zeit im Internet recherchierte, bin ich auf einen Artikel gestoßen der genau den selben Fehler beschreibt den ich hatte. Ursache für das Problem ist die robocopy.exe welche in der Version XP027 installiert ist. In dieser Version gibt es einen Bug, der meines Wissens nach noch nicht behoben wurde. Auch Windows 7 und Server 2008 R2 benutzen diese Version.
Wenn man aber auf die vorherige Version zurückgreift (XP026 – enthalten in der Robocopy GUI), funktioniert das Kopieren inkl. den Berechtigungen ohne Fehler.
Also habe ich mir die “alte” robocopy.exe XP026 heruntergeladen und beim Server 2008 im system32 Verzeichnis ersetzt. Anschließend startete ich das Script erneut auf dem Server 2008 und siehe da, die Dateien und Berechtigungen wurden richtig kopiert.
Update 21.10.2009:
Manchmal ist es auch als Domänen Admin nicht möglich die robocopy.exe im system32 Verzeichnis zu ersetzen, da man die Fehlermeldung ACCESS DENIED bekommt. Dies liegt daran, dass der Owner dieser Datei “TrustedInstaller” ist. Daher muss man zuerst die Ownership übernehmen. Anschließend kann die Datei überschrieben werden.