Robocopy
Robocopy[1], ou "Robust File Copy", est une commande de réplication de répertoires en ligne de commande. Elle faisait initialement partie du Windows Resource Kit à partir de la version 4.0 de Windows NT, et elle a été ajoutée aux commandes standard de Windows Vista, Windows 7, Windows 8, Windows 10 et Windows Server 2008. La commande s’appelle robocopy​
.
Développé par | Microsoft |
---|---|
Dernière version | 6.2 |
Environnement | Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 |
Type |
Composant de Microsoft Windows (d) Commande informatique |
Licence | Propriétaire |
Fonctionnalités
Robocopy est apprécié pour ses fonctionnalités largement supérieures à celles des commandes internes copy et xcopy de Windows, en particulier :
- Une tolérance à la perte du lien réseau et reprise de la copie une fois ce lien rétabli (les fichiers incomplets sont datés au et contiennent une information de reprise, de sorte que Robocopy sache où reprendre la copie).
- La préservation des attributs de fichier et métadonnées temporelles, du créateur propriétaire, des ACL NTFS et des informations d’audit en plus du contenu brut des fichiers grâce à des options en ligne de commande (
/COPYALL​
ou/COPY:​
). Les versions plus récentes sont également capables de préserver les métadonnées temporelles des répertoires (/DCOPY:T​
). - La possibilité de garantir un « droit de sauvegarde » Windows NT (
/B​
) ; de sorte qu’un administrateur puisse aussi copier les fichiers dont la lecture lui est normalement refusée. - Une copie persistante, avec la possibilité de préciser le nombre de nouvelles tentatives à opérer sur un fichier qui ne peut pas être ouvert.
- Un mode « miroir » qui permet de copier et, de manière optionnelle, de supprimer les fichiers de l’emplacement de destination s’ils n’existent pas ou plus dans l’emplacement source.
- La capacité de ‘sauter’ les fichiers existant déjà dans l’emplacement destination avec la même taille et les mêmes métadonnées (copie différentielle).
- Un indicateur de progression dans l’invite de commandes.
- La possibilité de copier des fichiers et des répertoires dont les noms excèdent les 256 caractères (jusqu’à 32 000 caractères de limite théorique) sans erreur[2].
- Des copies effectuées en parallèle (multithread, sous Windows 7 uniquement) [3].
- Le support de codes de retour[4] pour la programmation de fichiers batch.
La limitation principale de Robocopy est de ne pas prendre en charge les fichiers ouverts. Le mode appelé mode de sauvegarde est parfois interprété comme la capacité d’ouvrir les fichiers déjà ouverts, à tort. Ce mode de sauvegarde est un droit d’administration spécial qui permet à Robocopy de contourner les paramètres de droits d’accès (en l’occurrence, les ACL de NTFS) pour la fabrication de backups.
Par ailleurs, la version d’origine de Robocopy n’était pas capable de recopier à nouveau les attributs de sécurité des fichiers déjà copiés et dont ces attributs avaient changé après la première copie[5]. Ce comportement a été corrigé sur les versions de Robocopy pour Windows 2008 et Windows Vista, mais cela a pour conséquence que Robocopy n’a pas exactement le même comportement sur toutes les plates-formes[6].
Robocopy ne peut pas exclure les fichiers spécifiés avec des caractères génériques et un chemin de répertoire. Par exemple, /XF images\*.jpg​
provoquera une erreur.
Robocopy ne permet pas non plus d’exclure des répertoires spécifiés par un chemin qui commence à la racine. Par exemple, /XD Musique​
exclut à la fois les répertoires \Musique​
et \Utilisateurs\Nom\Musique​
alors que /XD \Musique​
n’exclut aucun répertoire. Par contre on peut spécifier le chemin complet, par exemple /XD C:\Dossier\Musique exclura ce dossier Musique mais gardera les autres comme C:\Dossier\Autre\Musique
Scénarios typiques d’utilisation
Copier le contenu du répertoire A​
dans le répertoire B​
(y compris les attributs et les métadonnées temporelles), de manière récursive et en copiant aussi les répertoires vides (/E​
):
robocopy C:\A C:\B /E
Copier le répertoire A​
de manière récursive (/E​
), et toutes les métadonnées de fichiers (/COPYALL​
, équivalent à /COPY:DATSOU​
, où D=Data, A=Attributes, T=Timestamps, S=Security=ACL NTFS, O=Owner info, U=aUditing info), sans faire de nouvel essai sur les fichiers verrouillés (/R:0​
) (par défaut, le nombre d’essais sur les copies en échec est de 1 million), en préservant les métadonnées temporelles des répertoires (/DCOPY:T​
– requiert une version XP026 ou ultérieure):
robocopy C:\A C:\B /COPYALL /E /R:0 /DCOPY:T
Créer un miroir de A​
dans B​
, en supprimant les fichiers de B qui ne sont pas présents dans A​
(/MIR​
), et copier les fichiers en mode redémarrable (/Z​
) au cas où la connexion réseau serait perdue :
robocopy C:\A \\BackupServer\B /MIR /Z
Il doit être précisé que l’utilisation de l’option /Z​
provoque un ralentissement[7] notable de la copie.
Un copieur de répertoires, pas de fichiers
La syntaxe de Robocopy est assez différente des commandes standard de copie, dans la mesure où elle n’accepte que des noms ou des chemins de répertoire comme emplacements source et destination. Les noms de fichiers et les caractères génériques (comme « *.* ») sont rejetés aussi bien pour la source que pour la destination. Des fichiers peuvent être spécifiés ou exclus grâce à l’argument optionnel de filtrage filespec. Cet argument de filtrage ne peut faire référence qu’à des noms de fichiers se trouvant dans les répertoires déjà spécifiés comme source de la copie ; des chemins de fichiers complets ne sont pas acceptés.
Par exemple, pour copier le fichier totote.txt​
du répertoire c:\marc​
au répertoire c:\sophie​
, on peut utiliser la commande suivante :
robocopy C:\marc C:\sophie totote.txt
Consommation de bande passante
L’option « délai inter-paquet (en) » (IPG) de Robocopy offre un certain contrôle de la bande passante utilisée lors d’une session réseau. En théorie, la formule ci-dessous indique le délai (D, en millisecondes) nécessaire pour simuler une bande passante données (BD, en kilobits par seconde), sur un réseau disposant d’une bande passante de BA kb/s :
Cependant, dans les faits, quelques essais sont généralement nécessaires pour trouver un délai approprié, qui corresponde à la nature et au volume du trafic réseau existant. Cependant, la technique proposée par l’option IPG n’offre pas un contrôle aussi fin que d’autres techniques de gestion de la consommation de bande passante, comme BITS (utilisé par Windows Update et BranchCache).
Interface graphique
Même si Robocopy est en soi un outil en ligne de commande, Microsoft TechNet lui a adjoint une interface graphique. Celle-ci requiert l’installation du framework .NET 2.0 (40 Mo), si celui-ci n’est pas déjà installé. L’interface graphique Microsoft pour Robocopy inclut la version XP026 de Robocopy (version pour Vista). Lorsqu’elle est téléchargée à partir du lien TechNet ci-dessous, cette version se présente sous "Microsoft Robocopy GUI 3.1.2."
Il existe d’autres interfaces graphiques non-Microsoft pour Robocopy :
Versions
Version du produit | Version de fichier | Année | Origine | Autre |
---|---|---|---|---|
1.70 | - | 1997 | Windows NT Resource Kit | |
1.71 | 4.0.1.71 | 1997 | Windows NT Resource Kit | |
1.95 | 4.0.1.95 | 1999 | Windows 2000 Resource Kit | |
1.96 | 4.0.1.96 | 1999 | Windows 2000 Resource Kit | (c) 1995-1997 |
XP010 | 5.1.1.1010 | 2003 | Windows 2003 Resource Kit | |
XP026 | 5.1.2600.26 | 2005 | Téléchargé avec Robocopy GUI v.3.1.2 | |
XP027 | 5.1.10.1027 | 2008 | Fourni avec Windows Vista, Server 2008 et suivants | (c) 1995-2004 |
6.1 | 6.1.7601 | 2009 | Fourni avec Windows 7 | (c) 2009 |
6.2 | 6.2.9200 | 2012 | Fourni avec Windows 8 | (c) 2012 |
10.0.14393.0 | 10.0.14393.0 | 2016 | Fourni avec Windows 10 |
Voir aussi
Références
- (en) La page Robocopy de Microsoft TechNet
- (en) Robocopy XP010 FAQ Wield powerful new switch options
- (en) Perform Multithreaded File Copies with Robocopy in Windows
- (en) Robocopy Return Codes
- (en) Microsoft's Robocopy compromise « Copie archivée » (version du 6 juillet 2009 sur Internet Archive).
- (en) Ugly bug in Robocopy – ignoring security on file level.
- (en) Robocopy /z is slower than normal copy
- (en) WinRoboCopy, une interface graphique pour RoboCopy
- (en) TribbleSoft : Easy RoboCopy
- (en) GUI for Command Line : Robocopy GUI
- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Robocopy » (voir la liste des auteurs).