Siempre es aconsejable tener una copia de seguridad, para ello vamos a utilizar rsync para sincronizar dos directorios,
en algunos sitios comentan que no funciona para sincronizar entre distintas maquinas, pero con un mount adecuado
podemos sincronizar con cualquier ordenador de nuestra red sin importar el sistema operativo del host.
Rsync posee un algoritmo de compresion y tecnicas para hacer mirroring de ficheros y directorios.
Rsync permite a la hora de sincronizar archivos grandes de varias gigas, nos permitira dos opciones o volver a
copiar todo el fichero o comparar los bloques y copiar solo aquellos bloques que son necesarios.
Otras caracteristicas que posee rsync:
- Soporte para copiar enlaces, ficheros de dispositivo, propietarios, grupos y permisos
- Opciones de exclusión (
exclude
yexclude-from
) similares a las del GNU tar - Modo CVS para ignorar los fichero que CVS ignoraría
- Se puede usar cualquier shell remota transparente, como ssh o rsh
- No es necesario ser
root
para usarlo - pipelining de los ficheros transferidos para minimizar la latencia
- Soporte para usuarios anónimos o autentificados usando el demonio de
rsync
(ideal para hacer mirroring)
Nos ponemos manos a la obra:
Sincronizar un solo fichero
# rsync -v prueba1 prueba2
(-v muestra informacion detallada, este comando nos sincronizar prueba1 con prueba 2,
manteniendo los permisos pero cambiando el propietario, dependiendo de quien lo lance).
Para sincronizar directorios usaremos la opcion -a que combina las siguientes opciones
-r : recorre la estructura de directorios
-l : mantiene los enlaces simbolicos
-p : mantiene los permisos
-t : mantiene la hora de los ficheros
-g : mantiene el grupo
-o : mantiene el propietario
-D : mantiene los ficheros de dispositivo (Root)
-a, --archive archive mode; same as -rlptgoD (no -H, -A)
SI no se especifica lo contrario rsync copiara fichero a fichero de forma completa, ya que estima que
el tiempo de comparar ficheros es mayor que el que copiarlos directamente por no decir el ahorro de recursos que conlleva,
si solo queremos que copia bloques usaremos la opcion:
-W, --whole-file copy files whole (without rsync algorithm)
# rsync -av -w prueba1 prueba2
building file list ... done
prueba 1
sent 23514 bytes received 1620 bytes 48789.33 bytes/sec
total size is 17625459 speedup is 153.05
Para comprimir podemos usar la opcion -z.
Como sabe rsync que un fichero ha cambiado es a través de la fecha y su tamaño, pero tambien
podemos forzarlo a que realice un checksum con la opcion -c.
Si queremos mantener una sincronizacion exacta deberemos borrar aquellos archivos que desaparezcan
del origen esto lo acemos añadiendo --delete
Si trabajamos directamente sobre el origen como sobre el destino se daran en ocasiones que los ficheros de
destino estaran mas actualizados, para que en ese caso no se machaquen esos archivos usariamos la opcion
-u.
Tambien podemos hacer uso de rsync para backups incrementales.