¿Hay alguna forma de xcopy que acaba de cambiar o archivos nuevos?

57

Estoy tratando de implementar un sitio web desde mi escritorio en mi servidor web y ahora estoy haciendo esto:

 xcopy C:\source X:\destination /s

Mi computadora de escritorio es una máquina con Windows XP, y necesito copiarla en una máquina con Windows Server 2008, pero esto copia todo y todo el sitio es muy grande y toma mucho tiempo terminar la copia.

¿Hay alguna manera de copiar específicamente archivos nuevos o actualizados? Veo que puede pasar una fecha de cambio, pero quería ver si hay una manera más simple de comparar con el archivo de destino ...

Además, estoy abierto a usar cualquier cosa fuera de xcopy que pueda hacer el trabajo también ...

leora
fuente
55
También puedes probar Robocopy.
joerage

Respuestas:

97

De la documentación de XCOPY :

/ d [: mm-dd-aaaa]: copia los archivos fuente modificados solo en la fecha especificada o después. Si no incluye un valor mm-dd-aaaa, xcopy copia todos los archivos de origen que son más nuevos que los archivos de destino existentes. Esta opción de línea de comandos le permite actualizar archivos que han cambiado.

Entonces, con su ejemplo, debería leer:

xcopy C:\source X:\destination /s /d
marca
fuente
2
el "/ d" parece que tienes que darle una fecha. Como se menciona en la pregunta, no tengo una fecha límite en mente. solo quiero copiar archivos nuevos y actualizados
leora
10
No, la fecha es opcional! Por eso está entre corchetes. ¿De verdad leíste esa línea? ¡Dice que hace exactamente lo que quieres que haga!
Mark
44
¡Lo único que debe tener cuidado con esta respuesta es que el servidor web y su estación de trabajo están configurados al mismo tiempo! Si ambos no usan NTP, esto podría perder archivos o copiar más archivos de los necesarios.
CarlF
55
Si bien la documentación lo establece con precisión, es fácil pasar por alto el /dhecho de que no es tan importante que la fecha sea opcional, luego mire las otras opciones y piense que no hay solución. :-)
Stéphane Gourichon
2
Si no existe un archivo en la carpeta de destino, parece que / D sin fecha especificada lo copiará, lo que puede no ser el resultado deseado.
tbone
24

La robocopia también es una buena alternativa:

Por defecto, Robocopy solo copiará un archivo si el origen y el destino tienen marcas de tiempo diferentes o tamaños de archivo diferentes.

Además, puede hacer mucho más: el comando espejo es útil para los sitios web donde también está eliminando archivos.

Mate
fuente
Gracias por mencionar robocopy, siempre es bueno aprender algunas de las nuevas utilidades disponibles.
Casper Leon Nielsen
3

Use la opción / A. Todos los archivos nuevos o modificados tendrán un conjunto de atributos de archivo.

Consulte el siguiente enlace para más detalles:

Sintaxis del comando Xcopy y ejemplos

Giri
fuente
1
Sí, pero a menos que lo haga xcopy /M, los archivos de origen seguirán teniendo el atributo de archivo establecido después de haberlos copiado, y también se copiarán la próxima vez. Requiere acceso de escritura a los archivos de origen.
Nigel Touch
2

Tengo la siguiente tarea programada para ~ 80k archivos y ~ 2k carpetas:

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

la opción / C continúa la copia incluso si "el acceso está denegado" al archivo o carpeta debido a que está abierto o no tiene permiso en la cuenta de servicio en la que ejecuta esta tarea programada.

el ">" sobrescribe el registro cada vez que quiera agregarlo, puede usar la tubería ">>".


fuente
0

Hay rsync , pero no lo he usado en Windows. La forma en que normalmente lo uso en Linux es:

rsync -avuz src/ remote:dst/

que solo envía actualizaciones (archivos nuevos y modificados).

jcomeau_ictx
fuente
-1

BitTorrent Sync funciona de maravilla. Se actualizará automáticamente cada vez que cambie un archivo. De igual a igual. Actualice varias ubicaciones a la vez si es necesario. Fácil de usar.

Jon49
fuente