En esta guía explicaremos la utilización de rsync para mejorar la productividad en los sistemas basados en Linux.
Rsync es una utilidad que permite transferir y sincronizar archivos o directorios de manera eficiente entre una máquina local o servidor remoto.
La sintaxis básica para rsync en entornos locales es la siguiente:
rsync [modificadores opcionales] [origen] [destino]
La sintaxis básica para rsync entre un entorno local a un entorno remoto es la siguiente:
rsync [modificadores opcionales] [origen] [usuario]@[host]:[destino]
Y viceversa:
rsync [modificadores opcionales] [usuario]@[host]:[origen] [destino]
Muchas distribuciones Linux incluyen el paquete rsync preinstalado. En el caso de que no venga preinstalado, puedes hacerlo de forma manual con el siguiente comando:
apt-get install rsync
yum install rsync
bew install rsync
¡Así de fácil! Para verificar que se ha instalado, puedes obtener la versión con el siguiente comando:
rsync -version
En este primer ejemplo creamos los directorios origen
y destino
. Seguidamente, crearemos 5 ficheros en el directorio origen y veremos la magia de rsync.
cd ~
mkdir origen
mkdir destino
touch original/archivo{1..5}
origen
con destino
mediante el uso de rsync:rsync origen/* destino
El *
indica que sincronice todo el contenido del directorio
En caso de que se añadiesen o se modificasen ficheros en el directorio origen
y se volviese a ejecutar el comando rsync
, solo se sincronizarían los archivos nuevos y modificados evitando así copiar archivos innecesarios.
A continuación, se especifican algunos de los modificadores opcionales que se le pueden añadir al uso de rsync
:
-a
o --archive
esta opción nos activa: -rlptgoD, que significa:
-r
recursivo-l
copiar enlaces simbólicos como enlaces simbólicos.-p
preservar los permisos.-t
preservar la fecha de modificación / creación del fichero.-g
preservar el grupo de los ficheros.-o
preservar el propietario de los ficheros.-D
conservar archivos del dispositivos y conservar ficheros especiales.-v
o --verbose
para mostrar información del proceso.-e
o --rsh
sirve para especificar una shell remota, por ejemplo, si se quieren hacer rsync entre servidores.--delete
elimina archivos en el directorio de destino si no existen en el directorio de origen.-z
o --compress
nos comprime los datos durante la transferencia.En este primer ejemplo sincronizaremos el contenido de la carpeta /var/log del servidor 10.0.0.11
a la carpeta /tmp de nuestro servidor mediante la shell
de SSH.
rsync -avz -e 'ssh' [email protected]:/var/log /var/log /tmp/log
A continuación, llevaremos a cabo la misma operación, pero en este caso con el tag --delete
, para que se borren los ficheros en destino que no existan en origen:
rsync -avz --delete -e 'ssh' [email protected]:/var/log /var/log /tmp/log
En conclusión, con rsync puedes transmitir trasferencias de ficheros a través de conexiones de red o directorios locales. Su flexibilidad hace que sea una muy buena opción para muchas operaciones a nivel de ficheros.
Un buen dominio de rsync te permite diseñar operaciones complejas de copias de seguridad i obtener un control sobre cómo y que se transfiere.