web-dev-qa-db-fra.com

Différence entre xcopy et robocopy

Je suis un peu nouveau pour le script batch. En tant que débutant, je les trouve tous les deux utiles lors de la création de scripts. Quelles sont les principales différences entre xcopy et robocopy?

49
naveen marri

Robocopy remplace XCopy dans les nouvelles versions de Windows

  1. Utilise la mise en miroir, XCopy ne le fait pas
  2. Possède une option/RH pour permettre un délai d’exécution de la copie
  3. A une option/MON: n pour vérifier les différences dans les fichiers
  4. Copie plus d'attributs de fichier que XCopy

Oui, je suis d'accord avec Mark Setchell, ils sont tous les deux merde. (présenté par Microsoft)


UPDATE:

Codes de retour XCopy:

0 - Files were copied without error.
1 - No files were found to copy.
2 - The user pressed CTRL+C to terminate xcopy. enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command line.
5 - Disk write error occurred.

Robocopy renvoie les codes:

0 - No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.
1 - One or more files were copied successfully (that is, new files have arrived).
2 - Some Extra files or directories were detected. No files were copied Examine the output log for details. 
3 - (2+1) Some files were copied. Additional files were present. No failure was encountered.
4 - Some Mismatched files or directories were detected. Examine the output log. Some Housekeeping may be needed.
5 - (4+1) Some files were copied. Some files were mismatched. No failure was encountered.
6 - (4+2) Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory
7 - (4+1+2) Files were copied, a file mismatch was present, and additional files were present.
8 - Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further.
16 - Serious error. Robocopy did not copy any files. Either a usage error or an error due to insufficient access privileges on the source or destination directories.

Vous trouverez plus de détails sur les valeurs de retour Robocopy ici: http://ss64.com/nt/robocopy-exit.html

62
Nicolas Tyler

La différence la plus importante est que robocopy réessayera (généralement) lorsqu'une erreur se produira, alors que xcopy ne le fera pas. Dans la plupart des cas, cela rend robocopy bien plus approprié pour une utilisation dans un script.

Addendum: Pour plus de détails, il existe un problème connu avec l'affaire Robocopy; La copie des fichiers ou des répertoires dont le nom contient des séquences UTF-16 non valides peut rester silencieuse. Si cela vous pose problème, vous devrez peut-être consulter des outils tiers ou écrire les vôtres.

13
Harry Johnston

La différence que j'ai pu voir, c'est que Robocopy a beaucoup plus d'options, mais je ne les ai pas trouvées particulièrement utiles sauf si je faisais quelque chose de spécial.

J'ai procédé à une analyse comparative de plusieurs routines de copie et trouvé XCOPY et ROBOCOPY comme étant les plus rapides, mais à ma grande surprise, XCOPY a constamment devancé Robocopy.

Il est ironique de constater que robocopy essaye de nouveau une copie qui a échoué, mais également beaucoup lors de mes tests d'évaluation, où xcopy n'a jamais échoué.

J'ai comparé le fichier complet (octet par octet) après mes tests d'évaluation.

Voici les commutateurs que j'ai utilisés avec robocopy dans mes tests:

 **"/E /R:1 /W:1 /NP /NFL /NDL"**.  

Si quelqu'un connaît une combinaison plus rapide (autre que la suppression de/E, ce dont j'ai besoin), j'aimerais entendre.

Une autre chose intéressante/décevante avec robocopy est que si une copie échoue, elle retentera 1 000 000 tentatives par défaut, avec un délai de 30 secondes entre chaque tentative. Si vous exécutez un fichier de traitement par lots sans surveillance, vous risquez d'être très déçu lorsque vous reviendrez après quelques heures pour constater qu'il tente toujours de copier un fichier particulier.

Les commutateurs/R et/W vous permettent de modifier ce comportement.

  • Avec/R, vous pouvez dire combien de fois réessayer,
  • / W vous permet de spécifier le temps d'attente avant les nouvelles tentatives.

S'il existe un moyen de joindre des fichiers ici, je peux partager mes résultats.

  • Mes tests ont tous été effectués sur le même ordinateur et
  • copié des fichiers d’un lecteur externe à un autre externe,
  • les deux sur les ports USB 3.0.

J'ai également inclus FastCopy et Windows Copy dans mes tests et chaque test a été exécuté 10 fois. Remarque, les différences étaient assez significatives. Les intervalles de confiance à 95% n'avaient pas de chevauchement.

7
SixSigmaGuy

Il est douloureux d’entendre que des personnes souffrent encore de la part de * {COPY} quelle que soit la version. Je suis un rédacteur expérimenté en batch et script Bash et je recommande rsync. Vous pouvez l'exécuter dans cygwin (cygwin.org) ou localiser des fichiers binaires flottants. et vous pouvez rediriger la sortie vers 2> & 1 vers un fichier journal tel que out.log pour une analyse ultérieure. Bonne chance aux gens, il est temps d'aimer à nouveau la vie. = M. Kaan =

2
Haji M. Kaan