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/hacia un demonio Rsync remoto. Proporciona una transferencia de archivos incremental rápida al transferir solo las diferencias entre el origen y el destino.
Rsync se puede usar para duplicar datos, copias de seguridad incrementales, copiar archivos entre sistemas y como reemplazo de scp
, sftp
y cp
comandos.
Este artículo explica cómo usar rsync
a través de ejemplos prácticos y explicaciones detalladas de los rsync
más comunes opciones.
Instalando Rsync #
El rsync
La utilidad está preinstalada en la mayoría de las distribuciones de Linux y macOS. Si no tienes rsync
instalado en su sistema, puede instalarlo fácilmente usando el administrador 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 usar el rsync
comando, comencemos revisando la sintaxis básica.
El rsync
expresiones de utilidad toman 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 cómo se comporta el comando. Las opciones más utilizadas son:
-a
,--archive
, modo de archivo, equivalente a-rlptgoD
. Esta opción le dice arsync
para sincronizar directorios recursivamente, transferir dispositivos especiales y de bloqueo, preservar enlaces simbólicos, tiempos de modificación, grupos, propiedad y permisos.-z
,--compress
. Esta opción fuerzarsync
para comprimir los datos a medida que se envían a la máquina de destino. Use esta opción solo si la conexión a la máquina remota es lenta.-P
, equivalente a--partial --progress
. Cuando se usa esta opción,rsync
muestra una barra de progreso durante la transferencia y mantiene los archivos transferidos parcialmente. Es útil cuando se transfieren archivos grandes a través de conexiones de red lentas o inestables.--delete
. Cuando se usa esta opción,rsync
elimina los archivos superfluos de la ubicación de destino. Es útil para duplicar.-q
,--quiet
. Utilice esta opción si desea suprimir los mensajes que no son 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. Aquí hay 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 el destino.
Omitir el nombre de archivo de la ubicación de destino 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á.
Vale la pena mencionar que rsync
da un tratamiento diferente a los directorios de origen con una barra diagonal final (/
). Si el directorio de origen tiene una barra inclinada al final, el comando copiará solo el contenido del directorio en el directorio de destino. Cuando se omite la barra diagonal final, rsync
copia el directorio de origen dentro del directorio de destino.
Usando rsync
para sincronizar datos desde/hacia una máquina remota #
Al usar rsync
para transferir datos de forma remota, debe estar instalado tanto en la máquina de origen como en la de destino. Las nuevas versiones de rsync
están configurados para usar SSH como shell remoto predeterminado.
En el siguiente ejemplo, estamos transfiriendo un directorio de una máquina local a una remota:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Si no ha configurado un inicio de sesión SSH sin contraseña en la máquina remota, se le pedirá que ingrese la contraseña de usuario. Para transferir datos de una máquina remota a una local, use 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, especifique el puerto usando -e
opción:
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Al transferir grandes cantidades de datos, se recomienda ejecutar rsync
comando dentro de una sesión de pantalla o usar el -P
opción:
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 usar --exclude
argumento y especifique los archivos y directorios que desea excluir en la línea de comando.
Al excluir archivos o directorios, debe usar sus rutas relativas a la ubicación de origen.
En el siguiente ejemplo se muestra cómo excluir los node_modules
y tmp
directorios:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
La segunda opción es usar --exclude-from
y especifique los archivos y directorios que desea excluir en un archivo.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txtnode_modules
tmp
Conclusión #
Le mostramos cómo usar Rsync para copiar y sincronizar archivos y directorios. Hay mucho más que aprender sobre Rsync en la página del Manual del usuario de Rsync.
Siéntase libre de dejar un comentario si tiene alguna pregunta.