Rsync para confirmar la transferencia/mv después de que todo se guarde localmente

Rsync para confirmar la transferencia/mv después de que todo se guarde localmente

¿Hay alguna manera de sincronizar una carpeta con una carpeta de eliminación del servidor pero mover todo solo después de que se haya realizado toda la transferencia?

No quiero que los archivos se muevan uno tras otro, porque esto causaría problemas con el servidor web en ejecución.

Prefiero mover la carpeta completa después de que todo se haya transferido al servidor (lo que demora aproximadamente ~1s)

Respuesta1

estas buscando el--actualizaciones-delayopción. De man rsync:

   --delay-updates
          This  option puts the temporary file from each updated file into
          a holding directory until the end of the transfer, at which time
          all  the files are renamed into place in rapid succession.  This
          attempts to make the updating of the files a little more atomic.
          [...]
          See  also the "atomic-rsync" perl script in the "support" subdir
          for an update algorithm  that  is  even  more  atomic  (it  uses
          --link-dest and a parallel hierarchy of files).

Respuesta2

La forma más segura es hacer que rsync coloque los archivos en un directorio alternativo fuera del docroot del servidor web. Luego cambie la configuración del servidor para que apunte docroot a la nueva carpeta e indique al servidor web que realice una"agraciado"recarga de su configuración. Con Apache, esto debería garantizar que no se manejen mal ni se abandonen solicitudes.

La USR1 o señal elegante hace que el proceso principal avise a los niños que salgan después de su solicitud actual (o que salgan inmediatamente si no están sirviendo nada). El padre vuelve a leer sus archivos de configuración y vuelve a abrir sus archivos de registro. A medida que cada hijo muere, el padre lo reemplaza con un hijo de la nueva generación de la configuración, que comienza a atender nuevas solicitudes de inmediato.

En otras palabras, automatizaría esto usando un script de shell y ssh en lugar de intentar encontrar opciones de rsync para administrar su servidor web.

información relacionada