Comment utiliser Robocopy sous Windows : guide complet avec exemples pratiques

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.

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:\Documents seulement 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 /e a 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 /MIR

Attention

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 :

  • /XF pour exclure des fichiers
  • /XD pour 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 /MIR

Cré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.log

Par 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.log

Quand 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.log

Dans 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.log

Dans 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
  • /R et /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 (ici Temp et Cache)
  • /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.log

Dé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

ValeurDescription
0Aucun 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.
1Tous les fichiers ont été copiés avec succès.
2Il 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é.
3Certains fichiers ont été copiés. Des fichiers supplémentaires étaient présents. Aucune défaillance n’a été rencontrée.
5Certains fichiers ont été copiés. Certains fichiers présentaient un problème de concordance. Aucune défaillance n’a été rencontrée.
6Des 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.
7Des fichiers ont été copiés, un fichier présentait un problème de concordance et des fichiers supplémentaires étaient présents.
8Plusieurs fichiers n’ont pas été copiés.

Source : https://learn.microsoft.com/fr-fr/windows-server/administration/windows-commands/robocopy#exit-return-codes

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 /NP

FAQ – 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.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

Laisser un commentaire