Articles

Permissions de fichiers de mise en miroir du commutateur Robocopy /MIR

Publié pour la première fois sur TECHNET le 31 juillet 2008
Certains clients ont souligné ce qu’ils croient être un bogue dans Robocopy.
La situation est la suivante: supposons que vous copiez vos fichiers à l’aide de Robocopy dans Windows Server 2003 ou XP. Ensuite, les autorisations de fichier ou de dossier (ACL) sont modifiées à la source ou à la destination. Vous souhaitez utiliser le commutateur /MIR pour mettre en miroir les autorisations:
>Destination source ROBOCOPY/MIR/SEC
Robocopy ne parvient pas à mettre en miroir les autorisations de fichier – mais fonctionne pour les autorisations de dossier.
Ce comportement est par conception. Robocopy se concentre sur la copie uniquement des fichiers qui ont changé (en taille ou en date de modification, par défaut). Si un fichier semble avoir changé, Robocopy copie ses données et, si vous avez également spécifié la sécurité de copie, copie l’ACL NTFS de la source vers la cible après avoir copié les données. Si un fichier semble n’avoir PAS changé, Robocopy l’ignore par défaut et ne copie rien pour le fichier, pas même ses informations de sécurité.
Lorsque j’ai écrit la partie « copie de sécurité » de Robocopy le 22 mai 1997, j’ai choisi de le faire pour des raisons de performances, afin de réduire les temps de Robocopy pour les grands arbres. C’était une mise en œuvre adéquate pour les besoins de la plupart des gens à l’époque. De plus, une autre raison pour laquelle j’ai choisi de faire les choses comme je l’ai fait, c’est que la définition de la sécurité sur les répertoires est suffisante pour la plupart des gens. Définir la sécurité fichier par fichier est une approche plus granulaire, bien sûr, mais entraîne une surcharge de maintenance plus importante, peut-être trop pour de nombreux utilisateurs.
Par conséquent, la solution répertoriée comme solution de contournement publiée par Martin Zugec (MVP) est précisément ce qui doit être fait dans cette situation, et ce comportement est attendu:
>ROBOCOPY/Mir <Source ><Cible >
>ROBOCOPY/E/Copy:S/IS/IT <Source><Cible >
La première commande Robocopy ci-dessus copiera les données et la sécurité des fichiers qui ont été mis à jour, et la deuxième commande Robocopy s’actualisera sécurité des fichiers pour tous les fichiers, sans copier aucune donnée de fichier.
Si vous utilisez une version de Kit de ressources de Robocopy et que vous souhaitez garder la sécurité synchronisée entre deux arborescences où les données sont assez statiques, mais la sécurité est mise à jour de temps en temps. En fait, la section « Copie des informations de sécurité NTFS » de Robocopy.doc (à partir des kits de ressources) indique:
« Pour actualiser les informations de sécurité des fichiers et répertoires de destination existants sans copier les données du fichier, utilisez le commutateur /IS avec le commutateur /COPY sans l’indicateur D. Par exemple /IS/COPY: SOU actualiserait toutes les informations de sécurité pour tous les fichiers sélectionnés, sans copier aucune donnée de fichier. »
Les choses ont un peu évolué au cours des 11 dernières années, sur le plan de la sécurité, j’ai donc légèrement changé la façon dont les choses fonctionnent dans ce domaine pour la version de Robocopy qui s’est retrouvée dans Vista, en ce sens que si vous spécifiez /SECFIX sur la ligne de commande, Robocopy copiera la sécurité pour les fichiers ignorés qui existent à la fois dans l’arborescence source et cible.
Ainsi, pour maintenir deux arbres synchronisés, y compris leur sécurité, à l’aide de Robocopy de Vista, vous pouvez utiliser les éléments suivants comme commande Robocopy régulière:
>ROBOCOPY <source ><cible >/MIR/SEC/SECFIX
/MIR répliquera les données et la sécurité (comme /SEC est spécifié) pour les fichiers modifiés, et /SECFIX mettra à jour uniquement la sécurité pour les fichiers inchangés. Ajoutez /V à la ligne de commande si vous voulez voir quels fichiers ont leur sécurité « corrigée » sans avoir leurs données copiées.

Kevin Allen