Si nous avons une construction réussie sur notre serveur de construction (CCNET), tous les fichiers de site Web ASP.NET sont copiés dans le répertoire virtuel (% Output_Dir%) afin que les non-développeurs puissent voir/tester la dernière version du site Web. À la fin de la construction, le fichier BAT suivant est exécuté.
rmdir /s /q "%output_dir%"
mkdir "%output_dir%"
xcopy "%source_dir%*" "%output_dir%" /e /c /i /q /-y
Le problème est que je trouve la copie lente et me demandait s'il y a des commandes de copie disponibles dans Windows 2008 plus rapides que XCopy? La source et la destination sont sur le même lecteur. Vous trouverez ci-dessous les arguments que nous utilisons lors de la copie.
/e = copies directories and sub directories including empty ones.
/c = continues copying even if there are errors
/i = if destination does not exist destination is directory
/q = don't display filenames
/-y = confirm overwrite
à partir d'un point de vue de performance uniquement , xcopy ou robocopy vous donnera des résultats similaires. J'ai rencontré quelques tests sur une boîte SP2 Windows Vista 64 bits pour faire des comparaisons. Toutes les copies ont été effectuées entre un disque SATA II interne de 7200 tr/min et un lecteur USB 2.0 externe ou sur le même lecteur interne lui-même où indiqué. Aucune configuration spéciale n'a été effectuée (composez votre propre esprit si cela invalide/valide le test), uniquement pour entrer la commande dans un fichier de commandes pour exécuter. PowerShell a été utilisé pour capturer les heures de début et d'arrêt. Après quelques passes, voici les moyennes des outils que j'ai joués avec:
Fichier: 732 909 568 octets (698 Mo), 1 fichier ISO copié dans un répertoire différent sur le même disque interne.
copy 6 secs (ex. copy G:\folder1\* G:\folder2\)
xcopy 6 secs (ex. xcopy G:\folder1 G:\folder2 /I /E /Y /R)
robocopy 6 secs (ex. robocopy G:\folder1\ G:\folder2 /E /NP)
teracopy 28 secs (ex. TeraCopy.exe Copy G:\folder1\ G:\folder2\)
fastcopy 19 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=G:\folder2)
Fichier: 732 909 568 octets (698 Mo), 1 fichier ISO copié sur un disque USB externe.
copy 36 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy 35 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 36 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 36 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 38 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)
Fichiers: 45,039,616Bytes (42.9MB) 5 fichiers aléatoires copiés sur un disque USB externe
copy 6 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy 5 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 6 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 12 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 6 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)
Fichiers/Directives: 1 087 180 800 octets (1.01 Go), 27 fichiers/8 répertoires copiés sur un disque USB externe.
copy *Not included in test
xcopy 57 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 58 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 56 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 60 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)
Ce n'est en aucun cas un test exhaustif, mais je viens de jeter un scénario de monde réel rapide sur certains des outils les plus populaires de ce genre montre que votre assez sûr de votre propre sécurité avec XCopy ou votre robocopy (du point de vue de la performance uniquement). Aussi l'option Robocopy /NP
(Pas de progrès) vous sauve 0 fois. Cela ne signifie pas que vous ne pouvez pas bénéficier de quelque chose d'autre que XCopy cependant. Robocopy est un excellent exemple (de - Wikipedia ):
Robocopy est notable pour les capacités ci-dessus et au-delà de la copie de Windows intégrée et
Commandes XCopy, y compris les éléments suivants:
J'utilise généralement:
robocopy source dest /E /MIR
ou une autre variante des paramètres - peut-être /NFL /NDL /NS /NC /NP
pour correspondre au "calme"
En fait, en éliminant le réseau, vous avez vraiment limité vos tests. Vous voudrez peut-être envisager d'utiliser une part de réseau, qui va être en gros du travail administrateur.
De plus, vous devez utiliser FTP et sauter complètement CIFS. Eseutil.exe est un autre utilitaire que vous pourriez lancer là-bas. (Un util d'échange pouvant être utilisé ailleurs, avec ses quatre DLL à charge.)
Ensuite, j'aimerais voir vos résultats.
J'ai dû faire plusieurs copies au fil des ans. Nous avons une machine Windows Server 2008 R2 comportant un répertoire unique avec plus de 12 m d'images à l'intérieur (environ 400 Go).
Évidemment, je préférerais que ce ne soit pas un tel répertoire mais:
Quoi qu'il en soit, je pensais juste que je partageais mon expérience avec eux à cause de la nature inhabituelle de mon répertoire vraiment grand.
J'utilise xcopy dans le même but. Ce que j'ai aussi fait a été ajouté un autre NIC sur ce serveur et mettez-le sur un sous-réseau séparé. Ensuite, a créé une connexion directe au serveur, je transfère des fichiers de. De cette façon, les 2 machines se déplacent Les données copiées via un sous-réseau et les utilisateurs peuvent toujours accéder via la deuxième carte réseau qui est connectée directement au réseau local.
Vous dites que la source et la destination sont sur le même lecteur, mais sont-ils tous deux sur le serveur de construction?
Si le serveur de construction est l'emplacement de la source et de la destination, envisagez de déplacer un dossier ou l'autre sur un autre lecteur, peut-être sur un autre contrôleur.
Si le serveur de construction n'est pas l'emplacement de la source et de la destination (les gouttes de construction ne sont pas toujours sur le serveur, elles sont construites), envisagez de créer une tâche sur le serveur où réside les dossiers de la source et de la destination. Ensuite, juste lancez cette tâche à distance.