Outil en ligne de commande Robocopy (fourni avec la plupart des versions de Windows)
Sur ma machine Windows 10, il est situé à C:\Windows\System32
De Wikipedia , il peut être utilisé avec l'ensemble d'options suivantes pour préserver les horodatages des fichiers et répertoires, ainsi que d'autres attributs :
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0
/DCOPY:T
préserver les horodatages originaux Répertoires (nécessite la version XP026 ou ultérieure)
/E
: Copie récursive des répertoires, y compris les répertoires vides
/R:0
: ne pas réessayer les fichiers verrouillés (le nombre de tentatives sur les copies échouées est de 1 million par défaut),
/COPYALL
: Copiez toutes les informations des fichiers,
(équivalent à /COPY:DATSOU
, où
Si vous seulement voulez préserver la date et l'horodatage des répertoires, mais que vous ne voulez pas que les sous-répertoires vides soient copiés et que vous ne voulez pas que les autres attributs soient préservés, alors vous pouvez utiliser :
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S
où /S
copie les sous-répertoires non vides
Pour voir la syntaxe complète, tapez robocopy /?
à l'invite de commande, ou jetez un coup d'œil à ces articles de blog : https://ss64.com/nt/robocopy.html an https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/
Un exemple de commande que j'ai récemment exécutée :
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR
Remarquez comment l'exclusion de 2 sous-répertoires nécessite d'utiliser deux fois le drapeau /XD
. De plus, la deuxième exclusion de répertoire utilise des guillemets car il y a des espaces dans le nom du répertoire.
Enfin, vous pouvez ajouter le drapeau /L
pour tester la commande avant de la faire pour de vrai. De cette façon, vous pouvez vérifier qu'elle ne copiera pas (ou ne supprimera pas) les répertoires/fichiers que vous ne voulez pas, et qu'il n'y a pas d'erreurs dans votre commande.
Edit : gotcha when copying from a Root Directory (aka drive) to a Folder (non-root directory)
Après avoir exécuté la commande d'exemple ci-dessus, le répertoire n'était pas visible ! (Même si show hidden files
et show system files
ont été vérifiés dans Windows 10 !) La commande suivante selon https://serverfault.com/a/455029/399723 a corrigé cela :
attrib -h -s C:\D_backup
Alternativement, l'ajout de la commande /A-:SH
“désactive l'attribut caché des fichiers système”, ce qui peut empêcher le répertoire d'être caché en premier lieu, conformément à la commande https://serverfault.com/a/565804/399723 . Voir aussi https://ss64.com/nt/robocopy.html .
Cette description éclaire davantage sur cette option en tant que solution.
Robocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR
Autre logiciel :
Alternativement, vous pouvez télécharger une version GUI de robocopy si vous ne souhaitez pas utiliser la ligne de commande.
Un autre utilitaire Windows est XCopy , bien qu'il soit inclus dans Windows 10, il est déprécié. Voir le lien pour gotchas.
La page Wikipedia pour RoboCopy (lien en haut de ce billet) énumère d'autres logiciels qui peuvent être utilisés.