Robocopy/MIR switch-mirroring file permissions
First published on TECHNET on Jul31,2008
一部のお客様は、Robocopyのバグであると考えていることを指摘しました。
状況は、Windows Server2003またはXPでRobocopyを使用してファイルをコピーするとします。 次に、ファイルまたはフォルダのアクセス許可(Acl)がソースまたは宛先で変更されます。 /MIRスイッチを使用してアクセス許可をミラーリングする場合:
>ROBOCOPYソース先/MIR/SEC
Robocopyはファイル権限をミラーリングできませんが、フォルダ権限では機能します。
この動作は仕様によるものです。 Robocopyは、変更されたファイル(デフォルトではサイズまたは変更された日付)だけをコピーすることに焦点を当てています。 ファイルが変更されたように見える場合、Robocopyはそのデータをコピーし、copying securityも指定した場合は、データのコピー後にNTFS ACLをソースからターゲットにコピーします。 ファイルが変更されていないように見える場合、Robocopyはデフォルトでそれをスキップし、ファイルのセキュリティ情報さえもコピーしません。
22May1997にRobocopyの”セキュリティコピー”の部分を書いたとき、大きなツリーのRobocopy時間を抑えるために、パフォーマンス上の理由からこれを行うことにしました。 これは当時のほとんどの人々のニーズに適切な実装でした。 また、私がやった方法で物事を行うことを選んだもう一つの理由は、ディレクトリにセキュリティを設定することはほとんどの人にとって十分 ファイルごとにセキュリティを設定することは、確かに、より詳細なアプローチですが、多くのユーザーにとっては、おそらくあまりにも多くの保守オーバーヘッ
したがって、Martin Zugec(MVP)が投稿した回避策としてリストされている解決策は、この状況で行う必要があるものであり、この動作が期待されます。
>ROBOCOPY/Mir<Source><>
>robocopy/e/copy:S/IS/IT<Source><<Target>
上記の最初のRobocopyコマンドは、更新されたファイルのデータとセキ任意のファイルデータ。
RobocopyのResource Kitバージョンを使用していて、データがかなり静的である二つのツリー間でセキュリティを同期させたい場合は、セキュリティが時々更新されます。 実際には、Robocopyの”NTFSセキュリティ情報のコピー”セクション。doc(From The Resource Kits)の状態:
“ファイルデータをコピーせずに既存の宛先ファイルおよびディレクトリのセキュリティ情報を更新するには、/ISスイッチと/COPYス たとえば、/IS/COPY:SOUは、ファイルデータをコピーせずに、選択したすべてのファイルのすべてのセキュリティ情報を更新します。”
物事は、セキュリティ面で、過去11年間で少し上に移動しているので、私はVistaで終わったRobocopyのバージョンのために、この領域での動作方法を少し変更しました。/SECFIXをコマンドラインで指定すると、Robocopyはソースツリーとターゲットツリーの両方に存在するスキップされたファイルのセキュリティをコピーするという点で、Robocopyはこの領域での動作を少し変更しました。
そのため、VistaのRobocopyを使用して、セキュリティを含む2つのツリーを同期させて維持するには、通常のRobocopyコマンドとして次のものを使用できます:
>ROBOCOPY<><<>/MIR/SEC/SECFIX
/MIRはデータとセキュリティを複製します(変更されたファイルに対しては/secが指定され、/secfixは変更されていないファイルのセキュリティだけを更新します。 データをコピーせずにセキュリティを「固定」しているファイルを確認する場合は、コマンドラインに/Vを追加します。
ケビン-アレン