Introducción
Rsync es una utilidad de línea de comandos rápida y versátil que sincroniza archivos y carpetas entre dos ubicaciones en un shell remoto o desde /hacia un demonio Rsync remoto. Proporciona una rápida transferencia de archivos incremental al transferir solo las diferencias entre el origen y el destino.
Rsync se puede utilizar para duplicación de datos, copias de seguridad incrementales, copia de archivos entre sistemas y como reemplazo de los scp
, sftp
y cp
para el uso diario.
En este tutorial, le mostraremos cómo usar rsync
través de ejemplos prácticos y explicaciones detalladas de las rsync
Instalar Rsync
La rsync
está preinstalada en la mayoría de las distribuciones de Linux y macOS. Puede comprobar si está instalado en su sistema escribiendo:
rsync --version
rsync version 3.1.2 protocol version 31
Si no tiene rsync
instalado en su sistema, puede instalarlo fácilmente usando el administrador de paquetes de su distribución.
Instale Rsync en Ubuntu y Debian
sudo apt install rsync
Instale Rsync en CentOS y Fedora
sudo yum install rsync
Sintaxis del comando Rsync
Antes de entrar en cómo usar el rsync
, comencemos mirando la sintaxis básica.
rsync
tienen la siguiente forma:
Local to Local: rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
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 todos los aspectos de su comportamiento. Las opciones más utilizadas son:
-a
,--archive
, modo de archivo, equivalente a-rlptgoD
. Esta opción le dice alrsync
que sincronice directorios de forma recursiva, transfiera dispositivos especiales y bloquee, conserve enlaces simbólicos, tiempos de modificación, grupo, propiedad y permisos.-z
, ---compress
. Esta opción obligará arsync
a comprimir los datos cuando se envíen a la computadora de destino.-P
, equivalente a--partial --progress
. Cuando se usa esta opción,rsync
mostrará una barra de progreso durante la transferencia y para mantener los archivos parcialmente transferidos. Es útil cuando se transfieren archivos grandes a través de conexiones de red lentas o inestables.--delete
. Al usar esta opción,rsync
eliminará los archivos extraños de la ubicación de destino. Es útil para duplicar.-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. De forma predeterminada,rsync
está configurado para usar ssh.
Uso básico de Rsync
Para copiar un solo archivo de una ruta local a otra, debe ejecutar el siguiente comando:
rsync -a /opt/filename.zip /tmp/
El usuario que ejecuta el comando debe tener permisos de lectura en la ubicación de destino y permisos de escritura en el destino.
Si omite el nombre del archivo de la ubicación de destino, el archivo se copia 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
En el siguiente ejemplo, estamos creando una copia de seguridad local de los archivos de nuestro sitio web:
rsync -a /var/www/domain.com/public_html//var/www/domain.com/public_html_backup/
Si el directorio de destino no existe, se creará.
Vale la pena mencionar que rsync
ofrece un tratamiento diferente a los directorios de origen con una barra inclinada /
. Si agrega una barra al final en el directorio de origen, solo copiará el contenido del directorio en el directorio de destino. Cuando omite la rsync
final, el directorio de origen se copiará en el directorio de destino.
Utilice Rsync para sincronizar datos desde y hacia una máquina remota
Cuando utilice rsync
para transferencia remota, debe estar instalado tanto en la computadora de origen como en la de destino. Las nuevas versiones de rsync
están configuradas para usar SSH como shell remoto predeterminado.
En el siguiente ejemplo, estamos transfiriendo un directorio de una computadora local a una computadora remota:
rsync -a /opt/media/remote_user@remote_host_or_ip:/opt/media/
Si no ha configurado el acceso SSH sin contraseña a la computadora remota, se le pedirá la contraseña del usuario.
Si desea transferir datos desde un servidor remoto a una computadora local, debe usar 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 que no sea el 22 predeterminado, puede especificar el puerto usando la opción -e
rsync -a -e "ssh -p 2322" /opt/media/remote_user@remote_host_or_ip:/opt/media/
Al transferir grandes cantidades de datos, se recomienda que ejecute el rsync
dentro de una pantalla o use la opción -P
rsync -a -P remote_user@remote_host_or_ip:/opt/media//opt/media/
Excluir archivos y directorios
Al excluir archivos o directorios, se deben utilizar las rutas relativas a la ubicación de origen.
Hay dos opciones para excluir archivos y directorios. La primera opción es usar el --exclude
y especificar los archivos y directorios que desea excluir de la línea de comando.
En el siguiente ejemplo, excluimos los node_modules
y tmp
ubicados dentro de src_directory
:
rsync -a --exclude=node_modules --exclude=tmp /src_directory//dst_directory/
La segunda opción es usar el --exclude-from
y especificar los archivos y directorios que desea excluir en un archivo.
nano exclude-file.txt
node_modules
tmp
Entonces:
rsync -a --exclude-from='/exclude-file.txt' /src_directory//dst_directory/
Conclusión
En este tutorial, aprendió a usar Rsync para copiar y sincronizar archivos y directorios. Hay mucho más que saber sobre Rsync en la página del Manual del usuario de Rsync.