2012-09-17 33 views
27

Me gustaría tener una copia sincronizada de una carpeta con todo su subárbol.¿Cómo mantener dos carpetas sincronizadas automáticamente?

Debería funcionar de forma automática; cada vez que creo, modifico o elimino personal 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

objetivo final es tener una copia de seguridad en tiempo real separado, sin el uso de enlaces simbólicos o Montar. Utilicé 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.

Así que pensé que añadir un paso más para mantener una copia de seguridad de mis datos:

  • guardo mis datos almacenados en una "carpeta A"
  • necesito la respuesta de mi pregunta actual para crear una sincronización unidireccional de la "carpeta A" a la "carpeta B" (¿podría ser una secuencia de comandos cron con rsync?). Lo necesito para ser una forma única de A a B, cualquier cambio en B no se deben aplicar a A.
  • El simplemente mantener sincronizados "carpeta B" con Ubuntu One

    De esta manera, cualquier cambio en A se aplicará a B, que se detectará desde U1 y se sincronizará con la nube.
    Si algo va mal y U1 borrar mis datos sobre B, siempre ellos tienen sobre A.

Inspirado por los comentarios de lanzz, otra idea podría ser la de ejecutar rsync en el inicio de copia de seguridad del contenido de una carpeta bajo Ubuntu One, e inicie Ubuntu One solo después de que se complete el rsync. ¿Qué piensas de eso? Entonces, ¿cómo saber cuándo termina rsync?

+0

¿Qué estás tratando de lograr? ¿Las carpetas realmente necesitan estar separadas, no se puede vincular un nombre a otro, o [bind-mount] (https://www.google.com/search?q=linux+mount+bind) el directorio a la ubicación secundaria? Además, eche un vistazo a [estos resultados de búsqueda] (https://www.google.com/search?q=sync+inotify). – lanzz

+0

@lanzz: consulte mis ediciones –

+0

Aconsejaría _através de la sincronización real en vivo (es decir, mirar continuamente los cambios de archivos en el directorio de origen) a favor de la 'rsync' periódica a través de cron. – lanzz

Respuesta

14

Eche un vistazo a rsync, tutorial por ejemplo here.

También eche un vistazo a onchange script.

+1

@alfC: Por el contrario, Google no almacena en caché una página para siempre. Use WaybackMachine en su lugar. – Nirmal

24

Puede usar inotifywait (con las banderas modify,create,delete habilitadas) y rsync.

while inotifywait -r -e modify,create,delete /directory; do 
    rsync -avz /directory /target 
done 
Cuestiones relacionadas