Me gustaría tener una copia sincronizada de una carpeta con todo su subárbol.
Debería funcionar automáticamente de esta manera: cada vez que creo, modifico o elimino cosas de la carpeta original, esos cambios deben aplicarse automáticamente a la carpeta de sincronización.
¿Cuál es el mejor enfoque para esta tarea?
Por cierto: estoy en Ubuntu 12.04
El objetivo final es tener una copia de seguridad separada en tiempo real, sin el uso de enlaces simbólicos o montaje. Usé Ubuntu One para sincronizar datos entre mis computadoras y, después de un tiempo, algo salió mal y todos mis datos se perdieron durante una sincronización.
Entonces pensé en agregar un paso más para mantener una copia de respaldo de mis datos:
- Mantengo mis datos almacenados en una "carpeta A"
- Necesito la respuesta a mi pregunta actual para crear una sincronización unidireccional de la "carpeta A" a la "carpeta B" (
cron
una secuencia de comandos conrsync
? Podría ser?). Necesito que sea unidireccional solo de A a B; los cambios en B no deben aplicarse a A. - El simplemente mantengo sincronizado la "carpeta B" con Ubuntu One.
De esta manera cualquier cambio en A será subprogramado a B, que será detectado desde U1 y sincronizado con la nube. Si algo sale mal y U1 borra mis datos en B, siempre los tengo en A.
Inspirado por los comentarios de lanzz, otra idea podría ser ejecutar rsync al inicio para hacer una copia de seguridad del contenido de una carpeta en Ubuntu One, e iniciar Ubuntu One solo después de que se complete rsync.
¿Qué piensas sobre eso? ¿Cómo saber cuándo termina rsync?
fuente
rsync
a través de cron.Respuestas:
Puede usar
inotifywait
(con lasmodify,create,delete,move
banderas habilitadas) yrsync
.while inotifywait -r -e modify,create,delete,move /directory; do rsync -avz /directory /target done
Si no tiene
inotifywait
en su sistema, ejecutesudo apt-get install inotify-tools
fuente
-e ssh user@remote:/target
arsync
si desea utilizar SSH como el transporte para acceder a la máquina remota.rsync -avz --delete --exclude-from=.rsyncignore /directory user@server:path
. Sin embargo, quería escribir una respuesta simple..git
carpeta.modify,create,delete,move
Necesita algo como esto: https://github.com/axkibe/lsyncd Es una herramienta que combina rsync e inotify; la primera es una herramienta que refleja, con el conjunto de opciones correcto, un directorio hasta el último bit. Este último le dice al kernel que notifique a un programa de cambios en un directorio o archivo. Dice:
Pero, según Digital Ocean en https://www.digitalocean.com/community/tutorials/how-to-mirror-local-and-remote-directories-on-a-vps-with-lsyncd - debería estar en el repositorio de Ubuntu!
Tengo requisitos similares y esta herramienta, que aún no he probado, parece adecuada para la tarea.
fuente
Solo una simple modificación de la respuesta de @silgon:
while true; do inotifywait -r -e modify,create,delete /directory rsync -avz /directory /target done
(La versión de @silgon a veces se bloquea en Ubuntu 16 si la ejecuta en cron)
fuente
Puede aprovechar fschange . Es una notificación de cambio del sistema de archivos de Linux. El código fuente se puede descargar desde el enlace anterior, puede compilarlo usted mismo.
fschange
se puede utilizar para realizar un seguimiento de los cambios de archivo mediante la lectura de datos de un archivo proc (/ proc / fschange). Cuando se escriben datos en un archivo, fschange informa el intervalo exacto que se ha modificado en lugar de simplemente decir que se ha cambiado el archivo. Si está buscando la solución más avanzada, le sugiero que consulte Resilio Connect . Es multiplataforma, proporciona opciones extendidas de uso y monitoreo. Dado que está basado en BitTorrent, es más rápido que cualquier otra herramienta de sincronización existente. Fue escrito en su nombre.fuente
Utilizo este programa gratuito para sincronizar archivos y directorios locales: https://github.com/Fitus/Zaloha.sh . El repositorio también contiene una demostración simple.
El buen punto: es un script de shell bash (solo un archivo). No es una caja negra como otros programas. La documentación también está ahí. Además, con algunos talentos técnicos, puede "doblarlo" e "integrarlo" para crear la solución final que desee.
fuente