linux - usar - rsync mirror folders
RSync: ¿cómo sincronizo en ambas direcciones? (5)
¿Conoces Unison File Synchronizer ?
Unison es una herramienta de sincronización de archivos para Unix y Windows. Permite que dos réplicas de una colección de archivos y directorios se almacenen en diferentes hosts (o diferentes discos en el mismo host), se modifiquen por separado y luego se actualicen propagando los cambios en cada réplica al otro. ...
Tenga en cuenta también que es resistente a la falla:
Unison es resistente al fracaso. Tiene cuidado de dejar las réplicas y sus propias estructuras privadas en un estado sensible en todo momento, incluso en caso de terminación anómala o fallas de comunicación.
Quiero usar rsync para sincronizar dos directorios en ambas direcciones.
Me refiero a la sincronización en sentido clásico ( no como se entiende en los manuales de rsync):
Quiero actualizar los directorios en ambas direcciones , dependiendo de cuál de ellos sea más nuevo .
¿Se puede hacer esto mediante rsync (preferiblemente en Linux) ?
Si no, ¿qué otras soluciones existen?
Estoy usando rsync
con inotifywait
. Cuando cambie cualquier archivo, se ejecutará rsync
.
inotifywait -m --exclude "$_LOG_FILE" -r -e create,delete,delete_self,modify,moved_to --format "%w%f" "$folder"
Necesitas ejecutar inotifywait
en ambos host. Por favor, compruebe el ejemplo inotifywait
Gracias jsight
rsync -urv --progress dir_a dir_b && rsync -urv --progress dir_b dir_a
Esto daría como resultado que la segunda sincronización ocurriera inmediatamente después de que finalizara la 1ra sincronización. En caso de que la estructura del directorio sea enorme, ahorrará tiempo, ya que no es necesario sentarse antes de la PC. Si la estructura es enorme, elimine lo detallado y progrese
rsync -ur dir_a dir_b && rsync -ur dir_b dir_a
Simplemente ejecútelo dos veces, con el modo "más nuevo" (-u o - indicador de actualización) más -t (para copiar la hora modificada del archivo), -r (para las carpetas recursivas), y -v (para una salida detallada para ver qué es obra):
rsync -rtuv /path/to/dir_a/* /path/to/dir_b
rsync -rtuv /path/to/dir_b/* /path/to/dir_a
Esto no manejará las eliminaciones, pero no estoy seguro de que haya una buena solución a ese problema con solo la sincronización periódica.
Use rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir
por ejemplo:
rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff
Sincronizará archivos xxx con archivos de diferentes cosas / xxx. Si no existieran archivos de cosas diferentes / xxx, lo creará, es decir, lo copiará.
-pogtEtv
- solo un montón de opciones para preservar los metadatos de archivos, más v - detallado y r - recursivo
--progress
- muestra el progreso de la sincronización en tiempo real - muy útil si copias grandes archivos
--bwlimit=2000
- establece la velocidad máxima de copia / sincronización (bw = ancho de banda)
PS rsync es críticamente importante cuando trabajas a través de la red; en el caso de una máquina local, puedes usar comandos como cp .
¡Buena suerte!