¿Cómo puedo copiar un directorio (grande) sobre otro cambiando solo los archivos que difieren?

¿Cómo puedo copiar un directorio (grande) sobre otro cambiando solo los archivos que difieren?

Tengo el directorio a y el directorio b. Ellos son grandes. b es casi idéntico a a. "casi" significa que hay 4 o 5 archivos diferentes y no sé cuáles son. Quiero copiar b sobre a, pero solo los archivos que difieren. Estoy en fiesta.

(no, no puedo simplemente eliminar a y reemplazarlo con b, porque 1) a está controlado por versión 2) una copia completa (o un mv) tomaría demasiado. Quiero copiar sólo los archivos que difieren).

Respuesta1

Puedes usar rsyncpara hacer esto, el comando que uso esrsync -tr "folder to copy from" "folder to copy to"

p.ejrsync -tr /home/me/stuff/* /home/me/otherstuff/

Respuesta2

También es posible hacer esto con el viejo cp:

¡Gracias a srcspider por recordarme que lo use -T!

cp -ruT old-dir new-dir

Respuesta3

Otra buena opción es Unison (http://www.cis.upenn.edu/~bcpierce/unison/), especialmente si no existe realmente una "fuente" y un "destino". Cada directorio es una raíz y Unison los sincroniza y conserva los metadatos para futuras sincronizaciones. Ofrece una opción de línea de comandos y GUI que también se puede programar fácilmente mediante cron.

Lo uso para hacer una copia de seguridad de mi Dropbox en mi dispositivo NAS local que no puede ejecutar un cliente de Dropbox.

Respuesta4

Puede diferenciar los 2 directorios.

diferencia -r dir1 dir2

le mostrará la lista de archivos que son diferentes

información relacionada