¿Cómo especifico una lista grande de archivos que necesito sincronizar con rsync?

¿Cómo especifico una lista grande de archivos que necesito sincronizar con rsync?

Tengo una lista de archivos y destinos que necesito sincronizar con rsync pero no quiero ejecutar rsync varias veces para eso (el tiempo de conexión es grande debido al uso de ssh en mi caso).

Ejemplo:

   ~/aaa    remote:/~/aaa
   ~/bbb    remote:/~/otherplace/bbb

Como puedes imaginar, la lista es más grande y en mi caso tengo que ejecutar el mismo conjunto con múltiples servidores remotos.

¿Cómo puedo implementar esto fácilmente? Quiero que rsync se inicie una vez por servidor.

Respuesta1

Una vez hice una solución rápida para esto cuando quería incluir este comportamiento en un script rsync existente que solo se transfería a una carpeta específica: hice un catálogo de enlaces simbólicos para este propósito en ambos lados y le dije a rsync que desreferenciara los enlaces ( -L) durante la transferencia. . Por mi parte, se desreferenciaron los enlaces en sus contenidos y se transfirieron al directorio en el lado remoto, donde se colocaron en los enlaces simbólicos que apuntaban a los directorios donde los quería.

En realidad, esta no es la peor manera de especificar archivos para realizar copias de seguridad. Es versátil y fácilmente personalizable sin cambiar los archivos de configuración (bueno, la estructura de los enlaces simbólicosesel archivo de configuración, en cierto modo).

Este ejemplo específico no es una buena solución si deseanoSin embargo, en ciertos casos, se desreferencian enlaces para su transferencia.

Respuesta2

Si el problema es ssh, entonces tal vez puedas acelerar las cosas reutilizando la conexión ssh, pon esto en ~/.ssh/config o algún otro archivo de configuración ssh relevante:

Host *
  ControlMaster auto
  ControlPath /tmp/%r@%h:%p

información relacionada