rsync: cómo copiar/guardar archivos en Linux

Introducción a rsync

En este tutorial, te explicaré cómo utilizarrsync (Remote Synchronization) para realizar copias o copias de seguridad en Linux.

rsynEs una herramienta de sincronización de carpetas disponible en la mayoría de las distribucionesLinuxy que suele utilizarse para realizar copias de seguridad de archivos o sitios web…

Al ejecutar sucesivamente el mismo comando, es decir, con el mismo origen y destino,ryncrsync solo copiará los elementos nuevos y aquellos que hayan sido modificados.

La ventaja de utilizar rsync es la compatibilidad nativa con SSH, que permite copiar hacia un servidor remoto o desde un servidor remoto.

Uso de rsync

Ahora vamos a ver cómo funciona rsync.

Al igual que la mayoría de los programas de copia, hay que especificarle un origen y un destino:

rsync -parameters source/ destination/

Los parámetros más utilizados son:

  • -a / –archive: permite realizar una copia recursiva conservando prácticamente todas las propiedades de los elementos copiados.
  • -v / –verbose: permite mostrar el progreso

Para ilustrar este tutorial, vamos a copiar la carpeta/etc/ansible/, en primer lugar, en el mismo servidor, en una carpeta específica/backup/ansible/, y, a continuación, en un servidor remoto.

Esta es la carpeta de origen:

Para copiar el archivo, este es el comando que hay que utilizar:

sudo rsync -a /etc/ansible/ /backup/ansible/

-vComo se puede ver, el comando no muestra ningún mensaje; si se desea obtener información sobre la transferencia, hay que añadir el parámetro.

Si miro en la carpeta /backup/ansible/, veo que las carpetas y los archivos se han copiado correctamente.

Como habrás podido ver en el comando para realizar la copia, al final de la ruta de origen hay un /.

Los dos comandos siguientes no dan el mismo resultado:

  • rsync -a /etc/ansible /backup/ansible/
  • rsync -a /etc/ansible/ /backup/ansible/

El primer comando creará la carpeta de origen en el destino, lo que significa que encontraríamos la copia de seguridad en la siguiente carpeta:/backup/ansible/ansible/ mientras que el segundo comando copia el contenido de la carpeta de origen a la carpeta de destino.

Para mostrar el progreso y el resultado del comandorsync, hay que añadir el parámetro -v

sudo rsync -av /etc/ansible/ /backup/ansible/

Si ejecuto el mismo comando a continuación, se puede ver que no se ha copiado nada, ya que no se ha realizado ningún cambio.

En la introducción, os dije quersync admite de forma nativa SSH para realizar la copia de seguridad en un servidor remoto, y eso es lo que vamos a ver ahora.

El servidor remoto puede ser tanto el origen como el destino (quizá incluso ambos a la vez, ¡pero no lo he probado!).

Esta es la sintaxis para indicar el servidor remoto: <user>@<server>:/path/use/by/rsync/.

Para hacer una copia de seguridad de la carpeta /etc/ansible/ en un servidor remoto:

sudo rsync -avz /etc/ansible/ [email protected]:/backup/ansible/

Al ejecutar el comando, hay que introducir la contraseña de la cuenta en el servidor remoto.

Como podéis ver, he añadido el parámetro -z, que permite activar la compresión durante la transferencia.

La cuenta utilizada para conectarse al servidor remoto debe tener permisos de escritura en la carpeta de destino.

En el servidor de destino, encuentro mis archivos y carpetas que se han transferido mediante rsync.

En Internet también encontrarás esta sintaxis de comando:

sudo rsync -e ssh -avz /etc/ansible/ [email protected]:/backup/ansible/

El parámetro-ese añade para indicar el shell remoto (remote shell)

Si queréis crear un script de copia de seguridad en un servidor remoto, tendréis que configurar la autenticación SSH mediante clave.

Parámetros adicionales para rsync

Para terminar este primer tutorial dedicado arsync , aquí tienes algunos parámetros útiles:

  • --delete-after : esta opción permite eliminar los archivos de la carpeta de destino que ya no están presentes en la fuente
  • --remove-source-files : elimina los archivos del origen tras la transferencia; equivale a hacer un «cortar/pegar», y las carpetas no se eliminan.
  • --exclude : permite excluir archivos o carpetas--exclude="*.log" --exclude="temp"; al añadir esto al comando rsync, se excluirán todos los archivos con la extensión .log y las carpetas cuyo nombre sea temp.

Ahora ya tienes toda la información necesaria para configurar scripts de copias de seguridad utilizando rsync.

Además, aquí tienes la página de manual dersync con todos los parámetros disponibles.

En un proyecto tutorial, te explicaré cómo realizar copias de seguridad diferenciales e incrementales con rsync.

Romain Drouche
Romain Drouche
Arquitecto de sistemas | MCSE: Infraestructura básica
Experto en infraestructura de TI con más de 15 años de experiencia en el sector. Actualmente, como Gerente de Proyectos de Sistemas y Redes y experto en Seguridad de Sistemas de Información (ISS), utilizo mi experiencia para garantizar la fiabilidad y seguridad de los entornos tecnológicos.

Deja un comentario