Robocopy / MIR Switch – mirroring file permissions
Erstmals veröffentlicht auf TECHNET am 31. Juli 2008
Einige Kunden wies darauf hin, was sie glauben, ein Fehler in Robocopy zu sein.
Die Situation ist: Angenommen, Sie kopieren Ihre Dateien mit Robocopy in Windows Server 2003 oder XP. Dann werden Datei- oder Ordnerberechtigungen (ACLs) je nach Quelle oder Ziel geändert. Sie möchten den Schalter /MIR verwenden, um die Berechtigungen zu spiegeln:
> ROBOCOPY source destination /MIR /SEC
Robocopy kann Dateiberechtigungen nicht spiegeln – funktioniert aber für Ordnerberechtigungen.
Dieses Verhalten ist beabsichtigt. Robocopy konzentriert sich darauf, nur Dateien zu kopieren, die sich geändert haben (standardmäßig in Größe oder Änderungsdatum). Wenn eine Datei so aussieht, als hätte sie sich geändert, kopiert Robocopy ihre Daten und kopiert, wenn Sie auch Kopiersicherheit angegeben haben, die NTFS-ACL nach dem Kopieren der Daten von der Quelle zum Ziel. Wenn eine Datei so aussieht, als hätte sie sich NICHT geändert, überspringt Robocopy sie standardmäßig und kopiert nichts für die Datei, nicht einmal ihre Sicherheitsinformationen. Als ich am 22. Mai 1997 den Teil „Sicherheitskopie“ von Robocopy schrieb, entschied ich mich aus Leistungsgründen dafür, die Robocopy-Zeiten für große Bäume niedrig zu halten. Dies war eine angemessene Umsetzung für die Bedürfnisse der meisten Menschen zu dieser Zeit. Ein weiterer Grund, warum ich mich dafür entschieden habe, die Dinge so zu machen, wie ich es getan habe, ist, dass das Festlegen der Sicherheit für Verzeichnisse für die meisten Menschen ausreichend ist. Das Festlegen der Sicherheit auf Dateibasis ist sicherlich ein detaillierterer Ansatz, verursacht jedoch einen größeren Wartungsaufwand, der für viele Benutzer möglicherweise zu hoch ist.
Daher ist die von Martin Zugec (MVP) als Workaround aufgeführte Lösung genau das, was in dieser Situation getan werden muss, und dieses Verhalten wird erwartet:
> ROBOCOPY /Mir <Source><Ziel>
> ROBOCOPY /E /Kopieren:S /IST /ES <Quelle><Ziel>
Der erste obige Robocopy-Befehl kopiert Daten und Sicherheit für Dateien, die aktualisiert wurden, und der zweite Robocopy-Befehl aktualisiert die Dateisicherheit für alle Dateien, ohne alle Dateidaten.
Wenn Sie eine Resource Kit-Version von Robocopy verwenden und die Sicherheit zwischen zwei Bäumen synchronisieren möchten, in denen die Daten ziemlich statisch sind, die Sicherheit jedoch von Zeit zu Zeit aktualisiert wird. In der Tat, der Abschnitt „Kopieren von NTFS-Sicherheitsinformationen“ von Robocopy.doc (aus den Resource Kits) besagt:
„Um Sicherheitsinformationen für vorhandene Zieldateien und -verzeichnisse zu aktualisieren, ohne Dateidaten zu kopieren, verwenden Sie den Schalter /IS zusammen mit dem Schalter /COPY ohne das Flag D. Zum Beispiel /IS / COPY:Dies würde alle Sicherheitsinformationen für alle ausgewählten Dateien aktualisieren, ohne Dateidaten zu kopieren.“
Die Dinge haben sich in den letzten 11 Jahren sicherheitshalber ein wenig weiterentwickelt, daher habe ich die Funktionsweise in diesem Bereich für die Version von Robocopy, die in Vista gelandet ist, geringfügig geändert, indem Robocopy die Sicherheit für übersprungene Dateien kopiert, die sowohl im Quell- als auch im Zielbaum vorhanden sind, wenn Sie /SECFIX in der Befehlszeile angeben.
Also, um zwei Bäume synchron zu halten, einschließlich ihrer Sicherheit, mit Vista Robocopy, können Sie die folgenden als reguläre Robocopy Befehl verwenden:
> ROBOCOPY <Quelle><Ziel> /MIR /SEC /SECFIX
/MIR repliziert Daten und sicherheit (wie / SEC angegeben ist) für geänderte Dateien, und / SECFIX aktualisiert nur die Sicherheit für unveränderte Dateien. Fügen Sie / V zur Befehlszeile hinzu, wenn Sie sehen möchten, bei welchen Dateien die Sicherheit „behoben“ wird, ohne dass ihre Daten kopiert werden.
Kevin Allen