73 votes

Existe-t-il un moyen de xcopier uniquement les fichiers modifiés ou nouveaux ?

J'essaie de déployer un site Web depuis mon ordinateur de bureau vers mon serveur Web. Pour l'instant, je procède de la manière suivante :

 xcopy C:\source X:\destination /s

Mon ordinateur de bureau est une machine Windows XP, et j'ai besoin de faire une copie sur une machine Windows Server 2008, mais cela copie tout et le site entier est très grand et cela prend beaucoup de temps pour finir la copie.

Existe-t-il un moyen de copier uniquement les fichiers nouveaux ou mis à jour ? Je vois que vous pouvez passer une date de modification depuis, mais je voulais voir s'il y avait un moyen plus simple de comparer avec le fichier de destination...

De plus, je suis ouvert à l'utilisation de tout ce qui peut faire l'affaire en dehors de xcopy...

5 votes

Vous pouvez également essayer Robocopy.

114voto

user45499 Points 1

De la XCOPY00 documentation :

/d[:mm-jj-yyyy] : Copie uniquement les fichiers sources modifiés à la date spécifiée ou après. Si vous n'incluez pas de valeur mm-jj-aaaa, xcopy copie tous les fichiers Source qui sont plus récents que les fichiers Destination existants. qui sont plus récents que les fichiers de destination existants. Cette option de ligne de commande vous permet de mettre à jour les fichiers qui ont été modifiés.

Donc, avec votre exemple, il faut lire :

xcopy C:\source X:\destination /s /d

2 votes

Le "/d" semble indiquer que vous devez lui donner une date. comme mentionné dans la question, je n'ai pas de date limite à l'esprit. je veux juste copier les fichiers nouveaux et mis à jour.

14 votes

Non, la date est facultative ! C'est pourquoi elle est entre crochets. Avez-vous vraiment lu cette ligne ? Elle dit qu'il fait exactement ce que vous voulez qu'il fasse !

4 votes

La seule chose à laquelle il faut faire attention avec cette réponse est que le serveur web et votre poste de travail soient réglés sur la même heure ! S'ils n'utilisent pas tous les deux le protocole NTP, des fichiers pourraient être manqués ou copiés plus de fichiers que nécessaire.

26voto

Stephen Points 121

Robocopy est également une bonne alternative :

Par défaut, Robocopy ne copiera qu'un fichier que si la source et la destination ont des horodatages différents ou des tailles de fichiers différentes.

De plus, vous pouvez faire beaucoup plus - la commande miroir est pratique pour les sites Web où vous supprimez également des fichiers.

1 votes

Merci d'avoir mentionné robocopy - il est toujours agréable d'apprendre certains des nouveaux utilitaires disponibles.

3voto

Giri Points 559

Utilisez l'option /A. Tous les fichiers nouveaux ou modifiés auront l'attribut archive défini.

Consultez le lien ci-dessous pour plus de détails :

Syntaxe et exemples de la commande Xcopy

2 votes

Oui, mais à moins que vous xcopy /M alors les fichiers sources seront toujours ont l'attribut archive défini après que vous les ayez copiés, et seront également copiés la fois suivante. Nécessite un accès en écriture aux fichiers sources.

1voto

jcomeau_ictx Points 771

Il y a rsync mais je ne l'ai pas utilisé sous Windows. La façon dont je l'utilise normalement sous Linux est la suivante :

rsync -avuz src/ remote:dst/

qui n'envoie que les mises à jour (fichiers nouveaux et modifiés).

1voto

J'ai programmé la tâche suivante pour ~80 000 fichiers et ~2 000 dossiers :

xcopy \\sourceserver\share\ Q:\backuptarget\folder\ /i /d /y /he /C /EXCLUDE:C:\backup\list.txt > C:\backup\backup.log

l'option /C continue la copie même si "l'accès est refusé" au fichier ou au dossier parce qu'il est ouvert ou n'a pas de permission sous le compte de service sous lequel vous exécutez cette tâche planifiée.

Le ">" écrase le journal à chaque fois. Si vous voulez ajouter quelque chose, vous pouvez utiliser le tuyau ">>".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X