¿Cuál es el comando rsync para fusionar «inteligentemente» dos carpetas?

39

Tengo algunas carpetas que se duplicaron por error y tengo que fusionarlas. Digamos que la carpeta A contiene el archivo X y la carpeta B contiene el archivo Y, me gustaría que el archivo X se copie en la carpeta B. Pero, por supuesto, puedo enfrentar casos más complejos, donde fi la carpeta A y B contienen el mismo archivo X : en esos casos, me gustaría conservar la copia más reciente del archivo, por lo que rsync debería comparar ambos archivos, y si el origen es anterior, simplemente omita, de lo contrario el destino es el anterior, sobrescriba.

¿Qué parámetros debo poner en la línea de comando rsync?

Esto es lo que encontré buscando en Google, pero no creo que sea correcto.

rsync -avz --ignore-existing src dest

La página del manual está de alguna manera más allá de mí.

Gracias.

PD: en los casos en que exista un archivo en ambas carpetas, lo mejor sería sobrescribir el anterior en la carpeta de destino y, al mismo tiempo, conservar una copia del anterior, como copia de seguridad en caso de que vuelva a anterior

Tiziano Solignani
fuente

Respuestas:

66

Yo usaría:

rsync -abviuzP src/ dest/
  • -i activa el formato detallado, que muestra más información que el formato predeterminado
  • -bcrea archivos de copia de seguridad rsync que existen en ambas carpetas, anexando ~al archivo anterior. Puedes controlar este sufijo con--suffix .suf
  • -u realiza archivos de omisión de transferencia rsync que son más nuevos en dest que en src
  • -z activa la compresión, que es útil cuando se transfieren archivos fácilmente comprimibles a través de enlaces lentos
  • -Pse enciende --partialy--progress
  • --partial hace que rsync mantenga archivos parcialmente transferidos si la transferencia se interrumpe
  • --progress muestra una barra de progreso para cada transferencia, útil si transfiere archivos grandes
usuario49740
fuente
2
Realmente agradable, terminé usandorsync -abuP
qed