Comando rsync
Es una herramienta de copiado y/o sincronización de ficheros desde una localización a otra, los destinos pueden ser locales o remotos y en el caso de remoto permite realizar copias a través de ssh para realizar la transferencia de archivos.
Es uso de rsync es muy similar al de los comandos cp o scp, su patrón de uso es el siguiente:
rsync [opciones] origen [destino]
Tanto el origen como el destino pueden ser locales o remotos.
El uso mayoritario de esta herramienta es la de mantener dos copias sincronizadas de un mismo repositorio.
Uso básico
En el uso básico de rsync estos son las opciones más utilizadas:
- -a: copia los archivos y directorios recursivamente, preserva enlaces, permisos de archivos, usuario y grupo del archivo, y estampas de tiempo.
- -v: Información extra de los archivos copiados
- -z: Comprime la información antes de enviarla
- -h: Información de los datos de la transferencia en modo legible para los humanos.
Ejemplo de uso copiando/sincronizando las carpetas dir1 a dir2:
# rsync –avzh dir1 dir2
Una vez sincronizados los ficheros si modificamos un fichero, por ejemplo fichero2.txt, en la próxima sincronización sólo se copiará el fichero fichero2.txt:
Copias entre equipos
La copia entre equipos se realiza de forma similar a la copia básica, aunque se puede introducir el parámetro ‘-P’ para que nos muestre el progreso de la copia.
En el campo destino se especifica el nombre del host remoto, este puede ir acompañado del usuario remoto con el que se hará la copia, en caso de no indicar la cuenta remota se utilizará el usuario de origen que además deberá existir en el remoto.
Al conectarse el remoto solicitará la contraseña del usuario remoto también tendrá que estar instalado rsync en el destino.
Ejemplo de copiado/sincronización de directorios utilizando el usuario “juan” en el equipo remoto (10.0.2.5)
# rsync –avzhP dir1 juan@10.0.2.5:/tmp/dir2
Copias remotas por ssh
Si queremos un extra seguridad podemos utilizar ssh, simplemente tendremos que añadir el parámetro “–e ssh” a la orden de copiado remoto.
# rsync –avzhP -e ssh dir1
juan@10.0.2.5:/tmp/dir2
Si el puerto ssh es diferende al predeterminado (22) podremos agregarlo de la siguiente forma (ejemplo para puerto 9094):
# rsync –avzhP -e ‘ssh p9094’ dir1
juan@10.0.2.5:/tmp/dir2
Otros parámetros
Existen muchos parámetros para el uso de rsync, pero los mas usados son:
- -u: Mantiene los ficheros que son más nuevos en el destino, es decir no los borra o sobreescribe.
- –log-file=[fichero]: Envía un log del proceso a un archivo.
- -n, –dry-run: Modo test. Realiza una simulación de la sincronización sin realizar ningún cambio.
- –delete: Borra los archivos en el destino si ya no están en el origen.
- –exclude: Excluye archivos en la sincronización
- –include: Excluye todos menos los archivos que se nombran en el include.