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 arsync
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 arsync
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/
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/
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.