
Dans ce tutoriel, je vais vous expliquer comment utiliser Robocopy, l’outil de copie de fichiers intégré à Windows.
Puissant et flexible, Robocopy permet d’effectuer des sauvegardes, des synchronisations ou des migrations de données en toute fiabilité, même sur de gros volumes.
Nous verrons ensemble les commandes de base, les options les plus utiles et quelques exemples concrets pour gagner du temps au quotidien.
La copie de fichiers est une opération quotidienne pour tout administrateur système ou utilisateur avancé. Pourtant, lorsqu’il s’agit de gérer de gros volumes de données, de synchroniser des dossiers ou de réaliser des sauvegardes automatisées, les outils classiques de Windows montrent rapidement leurs limites.
C’est là qu’intervient Robocopy — pour Robust File Copy. Intégré nativement à Windows, cet utilitaire en ligne de commande offre des fonctionnalités puissantes et précises pour copier, déplacer ou synchroniser des fichiers tout en conservant les attributs, les autorisations NTFS et la structure d’arborescence.
Sommaire
Présentation de Robocopy
Robocopy, contraction de Robust File Copy, est un outil de copie de fichiers avancé développé par Microsoft. Il a été conçu pour offrir une alternative plus performante et plus fiable que la commande classique COPY ou XCOPY, notamment pour les administrateurs systèmes et les environnements professionnels où la stabilité et la reprise sur erreur sont essentielles.
Intégration dans les systèmes Windows
- Windows NT 4.0 / 2000 / XP : disponible uniquement via le Resource Kit Tools
- Windows Vista : première intégration native à Windows, sans installation supplémentaire
- Windows 7, 8, 10, 11 et Windows Server : inclus par défaut dans le système, accessible via l’invite de commandes (cmd) ou PowerShell
Ainsi, Robocopy fait aujourd’hui partie des outils standard d’administration Windows, et reste une référence incontournable pour toute tâche de sauvegarde, migration ou synchronisation de données.
Principaux avantages
- Reprise automatique en cas d’interruption réseau ou système
- Conservation des métadonnées et des permissions NTFS
- Copie multithreadée (option
/MT) pour accélérer les transferts - Exclusion de fichiers/dossiers selon des critères précis
- Génération de logs détaillés pour le suivi des opérations
- Possibilité d’automatisation dans des scripts ou tâches planifiées
Comment utiliser Robocopy sous Windows
L’utilisation de Robocopy repose sur la syntaxe suivante :
robocopy [source] [destination] [*.*] [options]source: Dossier que l’on souhaite copié, il peut être local ou un emplacement au format UNC.destination: Emplacement où l’on souhaite copié les données, il peut être local ou un emplacement au format UNC.*.*: indique que l’on souhaite copier tous les fichiers.options: paramètres
On va partir d’un exemple de base, puis ajouter progressivement des paramètres pour maîtriser pas à pas les principales fonctionnalités de Robocopy.
L’exemple ici va être de « sauvegarder » le dossier C:\Documents sur un partage réseau \\server\Backup\Documents.
Copie « simple » sans paramètre
robocopy "C:\Documents" "\\server\Backup\Documents\"
Cette commande :
- Copie tous les fichiers du répertoire
C:\Documentsseulement vers\\server\Backup\Documents\, par défaut robocopy n’est pas récursif- Ignore les fichiers déjà existants (par défaut, Robocopy ne recopie que ce qui a changé)
- Affiche un résumé à la fin (fichiers copiés, ignorés, erreurs, etc.)
Ajouter la récursivité avec l’option /e
Pour ajouter la récursivité à la copie, il existe deux options :
/s: copie les sous-dossiers et leurs contenus si le dossier n’est pas vide/e: copie les sous-dossiers et leurs contenus même les dossiers vides
Pour inclure tous les sous-dossiers, même ceux qui ne contiennent rien :
robocopy "C:\Documents" "\\server\Backup\Documents\" /e
L’option
/ea permis de copier cette fois-ci le dossier Keepass et son contenu.Sur la capture, on peut voir que des fichiers ont été ignoré car ils étaient déjà présent dans le dossier de destination.
Conserver les attributs et permissions : /COPYALL
Lors de la migration d’un serveur de fichiers, que cela soit pour une montée de version ou un déplacement vers un autre serveur, généralement, on souhaite converser toutes informations des dossiers et fichiers (droits NTFS, métadonnées, attributs, propriétaires, etc.), pour cela on va utiliser l’option /COPYALL.
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALLÉquivaut à
/COPY:DATSOU(Données, Attributs, Horodatage, Sécurité NTFS, Propriétaire, Informations d’audit)Option indispensable pour les migrations de serveur de fichiers.
Mode miroir : /MIR
Le mode miroir permet de s’assurer que l’emplacement de destination est identique à la source, c’est à dire que si un fichier est supprimé à l’emplacement source, celui-ci sera également supprimer à l’emplacement de destination.
Cette option est également utile quand on fait une migration de serveur de fichiers, car on fait généralement plusieurs Robocopy lors de ce type de migration.
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALL /MIRAttention
Cette option supprime dans la destination tout fichier absent de la source.
Exclure des dossiers et des fichiers
Pour exclure des dossiers ou des fichiers de la copie, il faut utiliser les options suivantes :
/XFpour exclure des fichiers/XDpour exclure des dossiers
On commence avec les fichiers :
/XF *.tmp: ignore tous les fichiers qui ont l’extension .tmp./XF backup.bak: ignore tous les fichiers qui se nomme backup.bak./XF C:\Documents\backup.bak: ignore spécifiquement le fichier C:\Documents\backup.bak/XF *.tmp *.bak: ignore les fichiers qui ont l’extension .tmp ou .bak.
Exclure des dossiers :
/XD Backup: ignore tous les dossiers qui s’appel Backup/XD "C:\Documents\Backup": ignore spécifique le dossier C:\Documents\Backup/XD "C:\Documents\Backup" "C:\Documents\Temp": ignore spécifique les dossiers C:\Documents\Backup et C:\Documents\Temp
Exemple :
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALL /MIR /XF *.tmp *.bak /XD "C:\Documents\Backup" "C:\Documents\Temp"On peut aussi écrire la commande avec plusieurs /XF et /XD :
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALL /MIR /XF *.tmp /XF *.bak /XD "C:\Documents\Backup" /XD "C:\Documents\Temp"Si vous souhaitez par exemple seulement copier les fichiers avec l’extension .pdf :
robocopy "C:\Documents" "\\server\Backup\Documents\" *.pdf /e /COPYALL /MIRCréer un journal de copie : /LOG
On va maintenant aborder les logs avec robocopy, pour cela il faut ajouter l’option /LOG:C:\emplacement\fichier.log.
Ce qui nous donne :
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALL /MIR /XF *.tmp *.bak /XD "C:\Documents\Backup" /LOG:C:\emplacement\fichier.logPar défaut, quand l’option /LOG est configuré, l’avancement n’est plus afficher dans fenêtre de commande, il faut ajouter l’option /TEE pour avoir la sortie écran et fichier.
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALL /MIR /XF *.tmp *.bak /XD "C:\Documents\Backup" /TEE /LOG:C:\emplacement\fichier.logQuand robocopy écrit les logs dans un fichiers, celui-ci écrase le contenu du fichier, pour les ajouter à la suite, il faut utiliser l’option /LOG+:C:\emplacement\fichier.log
Contrôler le comportement de robocopy en cas d’échec avec /R et /W
Quand robocopy n’arrive pas à copier un fichier parce que celui-ci est verrouillé par une application, il faut par défaut réessayer 1 000 000 avec un délai de 30 secondes entre chaque tentative, ce qui peut nous faire tomber quasiment dans une « boucle infinie »
Pour gérer le comportement de Robocopy on va utiliser les options /R (Retry),et /W (Wait).
- /R : nombre de tentative
- /W : délai d’attente en seconde entre chaque essaie
Ce qui donne :
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALL /MIR /XF *.tmp *.bak /XD "C:\Documents\Backup" /TEE /W:1 /R:1 /LOG:C:\emplacement\fichier.logDans cette commande, Robocopy ferra une nouvelle tentative en attendant 1 seconde.
Optimiser les performances de Robocopy avec /MT
Pour « finir » sur la configuration de l’exemple de commande Robocopy, nous allons optimiser les performances, robocopy est multi-threads, ce qui permet à robocopy traiter plusieurs copie de fichiers simultanément au seins d’une même commande.
Par défaut la valeur est de 8, en fonction des performances de la source et de la destination (cpu, ram et IO), il est possible d’augmenter cette valeur jusqu’à 128.
robocopy "C:\Documents" "\\server\Backup\Documents\" /e /COPYALL /MIR /XF *.tmp *.bak /XD "C:\Documents\Backup" /TEE /W:1 /R:1 /MT:24 /LOG:C:\emplacement\fichier.logDans la commande, robocopy va être exécuté avec 24 threads (
/MT:24).
Exemples pratiques d’utilisation de Robocopy
Maintenant, que nous avons vu les options de bases de pour Robocopy, voici quelques exemples d’utilisation.
Sauvegarde de dossiers personnels
Sauvegarde régulièrement le dossier Documents sur un disque externe ou un lecteur réseau :
robocopy "C:\Users\Romain\Documents" "E:\Sauvegarde\Documents" /MIR /R:3 /W:5 /LOG+:"C:\Logs\backup_docs.log"
Détails :
/MIR→ la sauvegarde est une image fidèle du dossier source/R:3 /W:5→ limite les tentatives en cas d’erreur (utile si un fichier est verrouillé)/LOG+→ ajoute le journal de la session au fichier existant
A exécuter dans une tâche planifiée Windows à chaque fermeture de session.
Sauvegarde vers un partage réseau
Copie des fichiers vers un serveur de sauvegarde accessible en UNC (chemin réseau) :
robocopy "D:\Projets" "\\serveur-backup\partage\Projets" /E /Z /R:2 /W:3 /LOG:"C:\Logs\backup_reseau.log"
Détails :
\\serveur-backup\partage\Projets→ chemin UNC vers la destination/Z→ active le mode redémarrable (utile si le réseau coupe pendant le transfert)/E→ copie récursive/Ret/W→ contrôle du comportement en cas d’erreur
Exclure certains dossiers ou fichiers
Ignorer les fichiers temporaires et les sous-dossiers inutiles :
robocopy "C:\Données" "D:\Sauvegarde" /E /XD "C:\Données\Temp" "C:\Données\Cache" /XF *.tmp *.bak /LOG:"C:\Logs\exclusion.log"
Détails :
/XD→ exclut des dossiers (iciTempetCache)/XF→ exclut des fichiers selon un motif (*.tmp,*.bak)
Migrer un serveur de fichiers
Voici un exemple de commande que j’utilise pour faire une migration de serveurs de fichiers :
robocopy "D:\Services" "\\s-new-file-servers\d$\Services" /mir /E /copyall /R:1 /W:1 /XA:ST /XD "D:\Services\Scans" /XF "~$*.*" /TEE /MT:24 /LOG+:C:\Temp\Migration-File-Server.logDétails :
/MIR→ Mise en mirroir des dossiers, lors d’une migration, on fait généralement plusieurs copies (synchro), cela permet de supprimer les fichiers sur le serveur de destination s’ils ont été supprimés sur la source/E→ Copie des sous-dossier même vide/COPYALL→ Copie toutes les informations des dossiers et fichiers (droits NTFS, méta données …)/R:1→ en cas d’échec, refait une tentative/W:1→ attend une seconde entre chaque nouvelle essaie/XA:ST→ exclut les fichiers systèmes et temporaire/XD "D:\Services\Scans"→ exclut le dossier D:\Services\Scans de la copie/XF "~$*.*"→ exclut les fichiers qui commence par : ~$ , généralement ce sont des fichiers temporaire Word ou Excel./TEE→ affiche les logs à l’écran en plus de la sortie fichiers/MT:24→ 24 threads en parallèle/LOG+:C:\Temp\Migration-File-Server.log→ ajouter les logs à la suite du fichier.
Utiliser Robocopy dans des scripts
Il est tout à faire possible d’utiliser Robocopy dans script.
Script batch Robocopy
Voici un exemple de script batch avec Robocopy.
@echo off
set SRC=C:\Users\Romain\Documents
set DST=\\serveur-backup\archives\Documents
set LOG=C:\Logs\backup_%date:~-4,4%-%date:~3,2%-%date:~0,2%.log
echo === DEMARRAGE SAUVEGARDE %date% %time% === %LOG%
robocopy "%SRC%" "%DST%" /MIR /COPYALL /R:3 /W:5 /MT:16 /LOG+:"%LOG%"
echo === SAUVEGARDE TERMINEE %date% %time% === %LOG%
Script PowerShell Robocopy
Le même script en PowerShell
# Variables
$Source = "C:\Users\Romain\Documents"
$Destination = "\\serveur-backup\archives\Documents"
$LogPath = "C:\Logs"
$Date = Get-Date -Format "yyyy-MM-dd_HH-mm"
$LogFile = Join-Path $LogPath "backup_$Date.log"
# Verifie si le dossier source existe
if (Test-Path $Source) {
Write-Host "Demarrage de la sauvegarde..."
# Execution de Robocopy
robocopy $Source $Destination /MIR /COPYALL /R:3 /W:5 /MT:16 /LOG:$LogFile
Write-Host "Sauvegarde terminee. Journal enregistre dans $LogFile"
} else {
Write-Host "Le dossier source $Source n existe pas !" -ForegroundColor Red
}
Les codes de sorties
Si vous souhaitez « perfectionner » vos scripts, voici les codes de sortie de Robocopy
| Valeur | Description |
|---|---|
| 0 | Aucun fichier n’a été copié. Aucune défaillance n’a été rencontrée. Aucun fichier ne présentait de problème de concordance. Les fichiers existent déjà dans le répertoire de destination ; par conséquent, l’opération de copie a été ignorée. |
| 1 | Tous les fichiers ont été copiés avec succès. |
| 2 | Il existe des fichiers supplémentaires dans le répertoire de destination qui ne sont pas présents dans le répertoire source. Aucun fichier n’a été copié. |
| 3 | Certains fichiers ont été copiés. Des fichiers supplémentaires étaient présents. Aucune défaillance n’a été rencontrée. |
| 5 | Certains fichiers ont été copiés. Certains fichiers présentaient un problème de concordance. Aucune défaillance n’a été rencontrée. |
| 6 | Des fichiers supplémentaires et des fichiers présentant un problème de concordance existent. Aucun fichier n’a été copié et aucun échec n’a été rencontré, ce qui signifie que les fichiers existent déjà dans le répertoire de destination. |
| 7 | Des fichiers ont été copiés, un fichier présentait un problème de concordance et des fichiers supplémentaires étaient présents. |
| 8 | Plusieurs fichiers n’ont pas été copiés. |
Utilisation avancée de Robocopy
Pour finir cet article sur robocopy, on va voir deux points supplémentaire sur Robocopy
Tester la commande robocopy avec l’option /L
L’option /L permet de lister les actions (copie, suppression, mise à jour) des fichiers et dossiers sans faire l’action.
robocopy "C:\Source" "D:\Destination" /MIR /L /LOG:"C:\Logs\simulation.log"Purger un dossier avec Robocopy
Une utilisation détournée de robocopy, c’est de l’utiliser pour supprimer des dossiers et fichiers, sur les serveurs de fichiers, la suppression de dossiers et fichiers peuvent être problématique pour plusieurs raisons :
- Chemin trop longs
- Ajout des autorisation NTFS explicite
- …
Pour gagner du temps, on va profiter de la puissance de robocopy pour effectuer une action de suppression fichier, en copiant un répertoire vide dans un dossier non vide avec l’option /MIR
Commencer par créer un dossier vide : C:\Empty.
Copie du dossier en mode miroir :
robocopy "C:\Empty" "D:\Folder\ToDelete" /MIR /NFL /NDL /NJH /NJS /NC /NC /NPFAQ – Questions fréquentes sur Robocopy
Quelle est la différence entre Robocopy et Xcopy ?
Robocopy est plus récent, plus robuste et plus complet qu’Xcopy.
Il gère les erreurs, peut reprendre une copie interrompue, conserve les permissions NTFS, et supporte la copie multithreadée. Xcopy, lui, est désormais obsolète.
Comment exclure certains fichiers ou dossiers ?
Utilise les options suivantes :/XF pour exclure des fichiers/XD pour exclure des dossiers
Exemple :
robocopy "C:\Source" "D:\Sauvegarde" /MIR /XF *.tmp *.bak /XD "C:\Source\Temp"
Comment planifier une tâche Robocopy automatiquement ?
Tu peux créer une tâche planifiée Windows (via le Planificateur de tâches) qui exécute ton script PowerShell ou ta commande Robocopy.
Cela permet d’automatiser les sauvegardes quotidiennes ou hebdomadaires sans intervention manuelle.
Comment générer un rapport ou un journal d’exécution ?
Utilise l’option /LOG pour enregistrer les résultats dans un fichier texte :
robocopy "C:\Source" "D:\Backup" /MIR /LOG:"C:\Logs\robocopy.log"
Tu peux aussi ajouter /TEE pour afficher le résultat à l’écran et dans le fichier.
Comment copier uniquement les fichiers modifiés ?
Robocopy gère cela automatiquement avec l’option /MIR (miroir), mais tu peux aussi utiliser /XO (exclude older) ou /MAXAGE:n pour ne copier que les fichiers récents.
Robocopy conserve-t-il les droits et permissions NTFS ?
Oui, à condition d’utiliser les options /COPYALL ou /SEC pour inclure les permissions et attributs de sécurité lors de la copie.
Peut-on utiliser Robocopy sur un partage réseau ?
Oui, Robocopy fonctionne parfaitement avec des chemins UNC :
robocopy "C:\Données" "\\ServeurSauvegarde\Partage" /MIR
Conclusion
Robocopy est bien plus qu’un simple outil de copie : c’est un véritable allié pour la gestion et la sauvegarde de fichiers sous Windows.
Grâce à sa robustesse, ses nombreuses options et sa compatibilité native avec PowerShell, il s’adapte à tous les besoins — qu’il s’agisse d’une synchronisation quotidienne, d’une migration de données, ou d’une sauvegarde automatisée.
Que tu sois administrateur système, technicien ou utilisateur avancé, maîtriser Robocopy te permettra de gagner en efficacité, en fiabilité, et en contrôle sur tes opérations de copie.
