Robocopy est un utilitaire de transfert de fichiers en ligne de commande pour Microsoft Windows . Robocopy est fonctionnellement plus complet que la commande COPY et XCOPY , mais ne remplace aucun des deux. Créé par Kevin Allen et publié pour la première fois dans le cadre du kit de ressources Windows NT 4.0 , il s'agit d'une fonctionnalité standard de Windows depuis Windows Vista et Windows Server 2008 .
Caractéristiques
Robocopy fournit des fonctionnalités qui ne sont pas présentes dans les commandes Windows COPY et XCOPY intégrées , notamment les suivantes :
- Récupération après une perte temporaire de connectivité réseau (les fichiers incomplets sont marqués d'un horodatage du 01/01/1970 et contiennent un enregistrement de récupération afin que Robocopy sache où continuer).
- Détection et ignorance des points de jonction NTFS , qui, dans certaines circonstances, peuvent provoquer des échecs de copie en raison de boucles infinies (avec le
/XJcommutateur). - Préserver toute combinaison des éléments suivants : contenu du fichier, attributs, métadonnées (par exemple, horodatages d'origine), ACL NTFS (DACL, SACL et propriétaire). Par exemple, il est possible de copier les ACL d'un fichier à un autre. Cependant, avant la version XP026, cette capacité était limitée aux fichiers uniquement, et non aux dossiers.
- Utilisation du privilège « Sauvegarder les fichiers et les répertoires » de Windows NT
SeBackupPrivilege( normalement non disponible pour les comptes d'utilisateur standard) pour contourner les ACL NTFS qui entraveraient autrement le transfert (nécessite le/Bcommutateur). - Persistance par défaut, avec un nombre programmable de tentatives automatiques si un fichier ne peut pas être copié.
- Le mode miroir, qui maintient deux arborescences de répertoires synchronisées en supprimant également les fichiers de la destination qui ne sont pas présents dans la source.
- Ignorer les fichiers déjà présents dans le dossier de destination avec une taille et un horodatage identiques.
- Indicateur de progression
- Prise en charge des chemins dépassant 259 caractères, jusqu'à une limite théorique d'environ 32 000 caractères.
- Copie multithread (introduite avec Windows 7 et Windows Server 2008 R2 ).
- Codes de retour (utilisés dans l'automatisation).
Compression
Depuis Windows Server 2019 et Windows 10 , Robocopy prend en charge la compression SMB pour le transfert de fichiers sur un réseau. Si la valeur /compressest spécifiée, que l'ordinateur de destination prend en charge la compression SMB et que les fichiers copiés sont compressibles, l'opération bénéficie d'améliorations de performances significatives. La compression SMB ajoute une compression des espaces blancs en ligne aux transferts de fichiers. La compression est également disponible avec la XCOPYcommande et la migration en direct Hyper-V avec SMB.
Exemples d'utilisation
Voici quelques exemples d'utilisation, qui ne sont pas sensibles à la casse. Si plusieurs options sont spécifiées, elles doivent être séparées par des espaces.
- Exemple 1
- Copier le contenu du répertoire de la source
Directory Avers la destinationDirectory B(y compris les données du fichier, les attributs et les horodatages), de manière récursive avec des répertoires vides (/E) :
Robocopy "C:\Répertoire A" "C:\Répertoire B" /E
- Si les noms de répertoire contiennent des caractères non standard, tels que des espaces, ils doivent être placés entre guillemets, comme c'est habituellement le cas sur la ligne de commande.
- Exemple 2
- Copier le répertoire de manière récursive (
/E), copier toutes les informations du fichier (/COPYALL, équivalent à/COPY:DATSOU,D=Données,A=Attributs,T=Horodatages,S=Sécurité= ACL NTFS , =Informations sur le propriétaire, =Informations sur l'audit), ne pas réessayer les fichiers verrouillés ( ) (la valeur par défaut du nombre de tentatives sur les copies ayant échoué est de 1 million), conserver les horodatages des répertoires d'origine ( - nécessite la version XP026 ou ultérieure) :OU/R:0/DCOPY:T
Robocopy C:\AC:\B /COPYALL /E /R:0 /DCOPY:T
- Exemple 3
- Miroir de A vers B, en détruisant tous les fichiers de B qui ne sont pas présents dans A (
/MIR), copie des fichiers en mode reprise (/Z) en cas de perte de la connexion réseau :
Robocopy C:\A \\serveur de sauvegarde\B /MIR /Z
- Pour la référence complète, consultez la page Microsoft TechNet Robocopy.
Focus syntaxique sur la copie de dossiers
La syntaxe de Robocopy est sensiblement différente de ses prédécesseurs ( copy et xcopy ), dans la mesure où elle accepte uniquement les noms de dossiers, sans barre oblique inverse finale, comme arguments source et destination. Les noms de fichiers et les caractères génériques (tels que *et ?) ne sont pas valides comme arguments source ou destination ; les fichiers peuvent être sélectionnés ou exclus à l'aide de l'argument de filtrage facultatif « fichier » (qui prend en charge les caractères génériques) ainsi que de diverses autres options.
Par exemple, pour copier deux fichiers d'un dossier c:\barvers c:\baz, la syntaxe suivante est utilisée :
robocopy c:\bar c:\baz fichier1.txt fichier2.db
Et pour copier tous les fichiers PDF de c:\barvers c:\baz:
robocopy c:\bar c:\baz *.pdf
Les fichiers nommés sont copiés uniquement à partir du dossier sélectionné pour la copie ; les noms de chemin complets ne sont pas pris en charge.
ATTENTION : un problème de longue date avec Robocopy signifie que si vous effectuez une sauvegarde à partir du dossier racine d'un lecteur [par exemple, robocopy d:\ b:\d-backup\ ....], les fichiers de destination recevront des attributs incluant SH. Cela signifie qu'ils seront invisibles pour un accès normal (y compris DIR dans cmd.exe). Pour résoudre ce problème, ajoutez /a-:SHà la ligne de commande de robocopy - ou exécutez une commande ATTRIB pour les supprimer par la suite.
Sortir
Robocopy affiche à l'écran, ou éventuellement dans un fichier journal, les noms de tous les répertoires qu'il rencontre, par ordre alphabétique. Chaque nom est précédé du nombre de fichiers du répertoire qui remplissent les critères de copie. Si le répertoire n'existe pas encore dans la cible, il est marqué « Nouveau répertoire » ; si le répertoire est vide et que l'option /E n'est pas utilisée, ou s'il ne contient aucun fichier répondant aux critères, aucun nouveau répertoire ne sera créé.
Si l'option /NFL (aucun nom de fichier dans le journal) n'est pas utilisée, les fichiers en cours de copie seront répertoriés après le nom du répertoire dans lequel ils se trouvent.
À la fin de la sortie se trouve un tableau donnant le nombre de répertoires, de fichiers et d'octets. Pour chacun d'eux, le tableau donne le nombre total trouvé dans la source, le nombre copié (y compris les répertoires marqués « New Dir » même s'ils ne sont pas copiés), le nombre ignoré (car ils existent déjà dans la cible) et le nombre de non-concordances , d'échecs et d'extras . « Échec » peut signifier qu'une erreur d'E/S s'est produite qui a empêché la copie d'un fichier ou que l'accès a été refusé. Il y a également une ligne de temps pris (dans laquelle le temps passé sur les fichiers ayant échoué semble être dans la mauvaise colonne).
Limitation de la bande passante
L'option « inter-packet gap » (IPG) de Robocopy permet un certain contrôle sur la bande passante réseau utilisée dans une session. En théorie, la formule suivante exprime le délai ( D , en millisecondes) requis pour simuler une bande passante souhaitée ( B D , en kilobits par seconde ), sur une liaison réseau avec une bande passante disponible de B A kbps :
En pratique, il est toutefois nécessaire de procéder à quelques essais pour trouver un délai approprié, en raison de facteurs tels que la nature et le volume du trafic sur le réseau. La méthodologie employée par l'option IPG peut ne pas offrir le même niveau de contrôle que d'autres technologies de limitation de bande passante, telles que BITS (utilisé par Windows Update et BranchCache).
Limites
- Robocopy ne copie pas les fichiers ouverts. Tout processus peut ouvrir des fichiers pour un accès exclusif en lecture en retenant l' indicateur
FILE_SHARE_READle service Volume Shadow Copy est utilisé dans de telles situations, mais Robocopy ne l'utilise pas. Par conséquent, Robocopy n'est pas adapté à la sauvegarde de volumes de systèmes d'exploitation actifs. Cependant, un utilitaire distinct tel que ShadowSpawn (sous licence MIT) ou DiskShadow (inclus avec Windows Server 2008 ), peut être utilisé au préalable pour créer une copie fantôme d'un volume donné, que Robocopy peut ensuite sauvegarder.
- Les versions de Robocopy sur les systèmes antérieurs à Windows Vista ne se mettent pas en miroir correctement. Elles ignorent les attributs de sécurité modifiés des fichiers précédemment mis en miroir.
- Lorsque vous spécifiez l'
/MT[:n]option permettant d'activer la copie multithread, l'/NPoption permettant de désactiver la création de rapports sur le pourcentage de progression des fichiers est ignorée. Par défaut, le commutateur MT fournit 8 threads. Le n correspond au nombre de threads que vous spécifiez si vous ne souhaitez pas utiliser la valeur par défaut.
Interface utilisateur graphique
Bien que Robocopy soit un outil de ligne de commande, Microsoft TechNet a fourni une interface graphique appelée Robocopy GUI. Elle a été développée par Derk Benisch, un ingénieur système du groupe MSN Search chez Microsoft, et nécessitait .NET Framework 2.0. Elle comprenait une copie de la version XP026 de Robocopy. Elle n'est plus disponible auprès de Microsoft, mais peut être téléchargée à partir de la Wayback Machine d' Internet Archive .
Il existe des interfaces graphiques non Microsoft pour Robocopy :
- RoboCopy GUI par PC Assist Software v3.0 (inclut la planification des tâches) (19 avril 2024)
- ChoEazyCopy de Cinchoo, interface graphique RoboCopy simple et puissante v2.0.0.1 (11 mars 2022)
- « Easy RoboCopy », dernière version 1.0.16 publiée le 11 janvier 2022.
- « WinRoboCopy » révision 1.3.5953.40896 publiée le 19 avril 2016.
- RoboCop RoboCopy, Robocopy GUI Générateur de skins et de scripts avec suivi de progression, 10 septembre 2015.
- Un programme de SH-Soft, également appelé « Robocopy GUI » v1.0.0.24 (8 octobre 2005).
Ken Tamaru de Microsoft a développé un programme de copie avec des fonctionnalités similaires à Robocopy, appelé RichCopy , qui a été abandonné en 2010. Il n'est pas basé sur Robocopy et ne nécessite pas .NET Framework.
Versions
Toutes les versions de Robocopy stockent leur numéro de version et leur date de sortie dans l'en-tête de leur fichier exécutable, consultable avec l'Explorateur de fichiers ou PowerShell . Certaines d'entre elles (pas toutes) indiquent leurs numéros de version dans leur sortie textuelle.