Introducción
El comando de sincronización remota o rsync se usa para transferir y sincronizar archivos y directorios entre máquinas, hosts, shells remotos o una combinación de los anteriores. Es una poderosa utilidad que debes conocer si trabajas con Linux. Cubriremos los conceptos básicos del comando rsync aquí. Aunque este artículo usa Ubuntu 20.04, puede usar los mismos comandos en otras distribuciones de Linux.
¿Qué hace que rsync sea tan especial?
Los comandos rsync usan compresión y descompresión cuando reciben y envían archivos, esto significa que consumirá mucho menos ancho de banda. Rsync solo actualiza las diferencias entre el origen y el destino, ya que utiliza el protocolo de actualización remota. También admite propietarios, grupos, enlaces, permisos y dispositivos.
¿Cómo instalar rsync?
La mayoría de las distribuciones de Linux vienen con rsync instalado. En caso de que el suyo no lo tenga, use el siguiente comando en su sistema Ubuntu:
sudo apt-get install rsync
Sintaxis Rsync
Esta sección revisará brevemente la sintaxis de rsync.
Transferencia o sincronización de local a local
rsync {opción} {fuente} {destino}
Transferencia o sincronización local a remota
rsync {opción} {origen} {[email protected]:destination}
Transferencia o sincronización remota a local
rsync {opción} {[email protected]:destination} {destination}
Fuente es el directorio de origen
Destino es el directorio de destino
La opción son las opciones del comando rsync
El usuario es el nombre de usuario remoto
Host es la IP o nombre de host remoto
Cómo usar rsync
Copiar archivos localmente
Para copiar archivos localmente, use:
rsync –a {filename} {destination}
En el ejemplo anterior, estamos copiando "source.zip ” de nuestro directorio actual a Documentos.
Puede verificar si el archivo se copió enumerando todos los archivos y directorios en Documentos, usando:
ls
Como puede ver, “fuente.zip ” está presente en el directorio Documentos.
Si no agrega un nombre para el archivo en el destino, copiará el mismo nombre que el archivo de origen. Para cambiar el nombre del archivo de destino, use:
rsync –a {filename} {destination/filename}
En el siguiente ejemplo, copiaremos “source.zip ” nuevamente, pero esta vez, cámbiele el nombre a “destination.zip ”.
“destino.zip ” se ha copiado en el directorio Documentos, como se muestra en la imagen a continuación.
Copiar el contenido de un directorio al destino
Puede usar el siguiente comando para copiar el contenido de su directorio de origen al destino.
rsync –av {source}/ {destination}
La imagen de arriba muestra el contenido "Fuente ” directorio que se está copiando en el “Destino ” directorio.
Copiar todo el directorio al destino
Si solo desea copiar el contenido de su directorio al destino, use:
rsync –av {source} {destination}
El ejemplo anterior copia el "Fuente ” y su contenido al “Destino ” directorio.
Mostrar progreso
Para ver el progreso, use:
rsync –rv –progress {source} {destination}
Ignorar archivos
Si desea ignorar ciertos archivos, use:
rsync -vr --exclude '{condition}' {source} {destination}
La “Fuente El directorio ” tiene los siguientes archivos:
En el siguiente ejemplo, ignoraremos los archivos que comienzan con "s ”.
Como muestra la imagen, solo "archivo ” se copia.
Lista de archivos y directorios
rsync se puede usar para enumerar el contenido de una fuente.
rsync {filename}
El comando anterior muestra el contenido del directorio Documentos.
Copiar archivos de una máquina local a una remota
Para mover archivos a una máquina remota, deberá instalar el servidor openssh. El comando para eso es:
sudo apt update
sudo apt install openssh-server
Una vez que se haya instalado, puede usar el siguiente comando para mover su archivo o directorio.
rsync –a {source} {remote [email protected] IP:/destination}
Se le pedirá la contraseña de la máquina remota.
En el siguiente ejemplo, moveremos “doc ” al directorio de inicio remoto.
Usando ls, podemos ver que “doc ” se ha movido aquí.
Copiar archivos de una máquina remota a una local
Utilizará el mismo comando que el utilizado en el ejemplo anterior.
rsync –a {remote source} {local [email protected] IP:/destination}
En este ejemplo, moveremos "remotesrcdoc ” de la máquina remota a la máquina local.
Usando ls, podemos ver que “remotesrcdoc ” se ha movido aquí.
Añadir la fecha actual al archivo de destino
Puede agregar la fecha al nombre de su archivo o directorio de destino usando:
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +\\%Y-\\%m)
En el siguiente ejemplo, moveremos “source.zip ” en el escritorio, asígnele el nombre de destino y agréguele la fecha.
Visualización de las diferencias entre los archivos de origen y de destino
El siguiente comando se puede utilizar para ver las diferencias entre los archivos de origen y de destino.
rsync –avzi {source}/ {destination}/
La siguiente imagen muestra que los archivos "Donuts ” y “Hola.txt ” no están presentes en el directorio de destino.
El parámetro “f ” significa archivo. Otros parámetros incluyen:
t:cambio en la marca de tiempo
d:cambio de destino
s:cambio en el tamaño del archivo
Limite el ancho de banda al transferir archivos
Para limitar el ancho de banda mientras transfieres archivos, usa:
rsync -vr --bwlimit=1000 {source}/* {destination}
En el siguiente ejemplo, estamos limitando el ancho de banda a 1000kB.
Más sobre rsync
Para ver más de las opciones disponibles en rsync, use:
rsync –help
Cubrimos algunos de los conceptos básicos del comando rsync, vimos cómo transferir y sincronizar archivos de forma local y remota.
Si desea sincronizar sus archivos usando el comando scp, visite aquí.