Comando Rsync en Linux con Ejemplos

rsync es una utilidad de línea de comandos rápida y versátil para sincronizar archivos y directorios entre dos ubicaciones a través de un shell remoto, o desde/a un demonio Rsync remoto. Proporciona una rápida transferencia incremental de archivos transfiriendo sólo las diferencias entre el origen y el destino.

Rsync puede utilizarse para duplicar datos, realizar copias de seguridad incrementales, copiar archivos entre sistemas y como reemplazo de los comandos scp, sftp y cp.

Este artículo explica cómo utilizar rsync a través de ejemplos prácticos y explicaciones detalladas de las opciones más comunes de rsync.

Instalación de Rsync #

La utilidad rsync está preinstalada en la mayoría de las distribuciones de Linux y macOS. Si no tiene rsync instalada en su sistema, puede instalarla fácilmente utilizando el gestor de paquetes de su distribución.

Instalar Rsync en Ubuntu y Debian #

sudo apt install rsync

Instalar Rsync en CentOS y Fedora #

sudo yum install rsync

Sintaxis del comando Rsync #

Antes de entrar en cómo utilizar el comando rsync, vamos a empezar por revisar la sintaxis básica.

Las expresiones de la utilidad rsync tienen la siguiente forma:

Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC... 
  • OPTION – Las opciones de rsync.
  • SRC – Directorio de origen.
  • DEST – Directorio de destino.
  • USER – Nombre de usuario remoto.
  • HOST – Nombre de host remoto o dirección IP.

rsync proporciona una serie de opciones que controlan el comportamiento del comando. Las opciones más utilizadas son:

  • -a, --archive, modo de archivo, equivalente a -rlptgoD. Esta opción indica a rsync que sincronice los directorios de forma recursiva, que transfiera los dispositivos especiales y de bloque, que conserve los enlaces simbólicos, los tiempos de modificación, los grupos, la propiedad y los permisos.
  • -z, --compress. Esta opción obliga a rsync a comprimir los datos mientras se envían a la máquina de destino. Utilice esta opción sólo si la conexión con la máquina remota es lenta.
  • -P, equivalente a --partial --progress. Cuando se utiliza esta opción, rsync muestra una barra de progreso durante la transferencia y mantiene los archivos parcialmente transferidos. Es útil cuando se transfieren archivos grandes a través de conexiones de red lentas o inestables.
  • --delete. Cuando se utiliza esta opción, rsync elimina los archivos extraños de la ubicación de destino. Es útil para el mirroring.
  • -q, --quiet. Utilice esta opción si desea suprimir los mensajes que no sean de error.
  • -e. Esta opción le permite elegir un shell remoto diferente. Por defecto, rsync está configurado para usar ssh.

Uso básico de Rsync #

El caso de uso más básico de rsync es copiar un solo archivo de una a otra ubicación local. He aquí un ejemplo:

rsync -a /opt/filename.zip /tmp/

El usuario que ejecuta el comando debe tener permisos de lectura en la ubicación de origen y permisos de escritura en la de destino.

Al enviar el nombre del archivo desde la ubicación de destino se copia el archivo con el nombre actual. Si desea guardar el archivo con un nombre diferente, especifique el nuevo nombre en la parte de destino:

rsync -a /opt/filename.zip /tmp/newfilename.zip

El verdadero poder de rsync viene al sincronizar directorios. El siguiente ejemplo muestra cómo crear una copia de seguridad local de los archivos del sitio web:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Si el directorio de destino no existe, rsync lo creará.

Cabe mencionar que rsync da un tratamiento diferente a los directorios de origen con una barra al final (/). Si el directorio de origen tiene una barra al final, el comando copiará sólo el contenido del directorio en el directorio de destino. Cuando se omite la barra oblicua, rsync copia el directorio de origen dentro del directorio de destino.

Using rsync to Sync Data from/to a remote Machine #

When using rsync to transfer data remotely, it must be installed on both the source and the destination machine. Las nuevas versiones de rsync están configuradas para utilizar SSH como shell remoto por defecto.

En el siguiente ejemplo, estamos transfiriendo un directorio desde una máquina local a una remota:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Si no ha establecido un inicio de sesión SSH sin contraseña en la máquina remota, se le pedirá que introduzca la contraseña del usuario.

Para transferir datos de una máquina remota a una local, utilice la ubicación remota como fuente:

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Si SSH en el host remoto está escuchando en un puerto diferente al predeterminado 22 , especifique el puerto utilizando la opción -e:

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Cuando se transfieren grandes cantidades de datos se recomienda ejecutar el comando rsync dentro de una sesión de pantalla o utilizar la opción -P:

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Excluir archivos y directorios #

Hay dos opciones para excluir archivos y directorios. La primera opción es utilizar el argumento --exclude y especificar los archivos y directorios que desea excluir en la línea de comandos.

Cuando se excluyen archivos o directorios, es necesario utilizar sus rutas relativas a la ubicación de origen.

En el siguiente ejemplo se muestra cómo excluir los directorios node_modules y tmp:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

La segunda opción es utilizar la opción --exclude-from y especificar los archivos y directorios que desea excluir en un archivo.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt
node_modulestmp

Conclusión #

Hemos mostrado cómo utilizar Rsync para copiar y sincronizar archivos y directorios. Hay mucho más que aprender sobre Rsync en Rsync User’s Manualpage.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.