Sincronizando directorios con rsync
Una de las costumbres más sanas que podemos tener las personas que trabajamos con ordenadores es la de hacer copias de respaldo de nuestros archivos, para que ante cualquier contratiempo podamos restaurar nuestra copia y continuar trabajando.
Mientras trabajaba en Windows encontré Toucan, una herramienta genial para mantener sincronizadas las carpetas de trabajo o los repositorios, Toucan sincroniza en dos direcciones y se convirtió en mi herramienta principal a la hora de hacer backup de mis archivos.
Ahora trabajando en Linux, antes de probar ninguna herramienta he preparado unos scripts bash para poder realizar backups de mis carpetas de trabajo, tanto en el servidor que se encuentra en la misma red, como en mi disco externo. Esta actividad me ha servido para aprender algo sobre bash scripting y sobre el uso de rsync.
Ya entrando en el tema, lo primero que necesitamos es instalar rsync, para lo cual escribiremos en la consola: sudo apt-get install rsync
Una vez finalizada la instalación, ya estaremos listos para escribir los comandos que necesitamos.
rsync (path del directorio origen) (path del directorio destino)
Hay algunos parámetros interesantes para el comando, por ejemplo:
-r = recursivo, procesa sub-directorios y archivos.
-v verbosidad, para mostrar los procesos que realiza.
-l = links, para incluir los enlaces simbólicos en la copia.
-p = permisos, para reproducir fijar los permisos de los archivos y carpetas copiados
-t –time, para mantener la fecha y hora de los archivos originales
-a –archive, es una forma sencilla de indicar que deseamos conservar todas las propiedades
-q, –quiet disminuir la verbosidad
-c, –checksum hacer siempre la comprobación de la integridad de los objetos
-R, –relative usar nombres/rutas relativas
-u, –update solo actualizar (no sobreescribir los archivos nuevos)
-n, –dry-run mostrar lo que fue transferido
-W, –whole-file copia todos los archivos (no incremental)
-I, –ignore-times Normalmente rsync salta los archivos que tienen el mismo tamaño y el mismo time-stamp.Esta opción desactiva dicho comportamiento.
–existing solo actualiza los archivos existentes.
–delete-after borra los archivos después de la transferencia, no antes
–force force fuerza la eliminación de directrios que no están vacíos
–size-only solo usa el tamaño de archivo para determinar cuales serán copiados
–progress muestra el progreso durante la transferencia
-z, –compress comprime los archivos
–exclude=PATTERN excluye los archivos que concuerdan con PATTERN
–daemon corre rsync como daemon (demonio)
–password-file=FILE obtener el password de FILE
–delete = para eliminar los archivos eliminados de la carpeta de origen
Ejemplo:
rsync -av /home/usuario/Proyectos/ /media/HDexterno/Backup/
Esta línea copiará el contenido de la carpeta Proyectos a la carpeta Backup
rsync -a /home/usuario/Proyectos/ root@192.168.1.1:/media/Sharing/Backup/
Esta línea copiará los archivos locales a una carpeta ubicada en otro equipod e la red o por ssh
El único inconveniente que le encuentro a rsync es que hace la sincronización en una sola dirección, pero en mi caso es perfecto para mis necesidades.
Espero que les sea de utilidad
Fuente: http://www.fredshack.com/
ser humano
Music & Design & Photo & Bike.
Test, fail, learn, repeat.