Como su nombre indica, rsync es una herramienta de sincronización. La primera vez que lo usa, simplemente copia archivos y directorios de una ubicación a otra. Sin embargo, los usos posteriores sincronizan solo las diferencias entre estas ubicaciones. Entonces, si agrega un archivo al directorio de origen, rsync copiará solo el nuevo archivo al destino. Esto ahorra mucho tiempo y ancho de banda, especialmente cuando se copia a una ubicación remota.
Imagine que tiene 50 GB de datos que debe sincronizar con un servidor remoto. Puede programar rsync para que se ejecute diariamente. En lugar de tener que copiar los 50 GB completos una y otra vez, la utilidad solo enviará las diferencias. Esto podría significar que solo tiene que cargar unos pocos megabytes de datos todos los días, en lugar de gigabytes.
En la imagen destacada de arriba, puede ver cómo la primera vez se transfirieron 104 MB, mientras que durante el segundo uso solo se requirieron 31 KB.
Cómo instalar rsync en varias distribuciones de Linux
En Debian y distribuciones basadas en Debian, como Ubuntu, puede instalar rsync con:
En Fedora, instale con:
Y en distribuciones derivadas de RedHat (por ejemplo, CentOS):
Para instalar rsync en Arch Linux, use el comando:
En openSUSE, use:
Si no está incluido en sus repositorios predeterminados, consulte el página de instalación de openSUSE rsync.
Cómo usar rsync para sincronizar archivos o directorios locales
La sintaxis general de rsync es: rsync [options] /path/to/source /path/to/destination
.
[options]
significa opciones de línea de comando que puede encontrar en el manual:
Pulse q para salir del manual.
Para copiar un archivo:
El comando anterior es equivalente a rsync /bin/ls /home/your_username
. Esto copia el comando «ls» al directorio en el que se encuentra actualmente. De forma predeterminada, esto debería ser /home/your_username
. El punto .
significa directorio actual. Los nombres de ruta pueden ser absolutos (/home/your_username/Downloads/chrome.zip
) o relativo a su directorio actual (Downloads/chrome.zip
).
Cuando maneja archivos muy grandes, puede usar este comando:
rsync -P /path/to/file /path/to/destination
Esto mostrará el progreso y le permitirá reanudar una transferencia interrumpida. En caso de que necesite reanudar, use:
rsync -P --append path/to/file /path/to/destination
Sin que --append
la transferencia comenzaría desde cero.
Para sincronizar directorios:
rsync -av /path/to/source /path/to/destination
Comando de ejemplo:
Efecto de la barra inclinada final en rsync (Importante)
En el comando anterior, tenga en cuenta que la ruta al directorio de origen no contiene una barra diagonal /
(/bin
contra /bin/
). Sin una barra inclinada al final, rsync copia el directorio en sí. Asi que rsync -av /bin .
da como resultado lo que se muestra en la siguiente imagen.
Cuando se usa una barra diagonal final, rsync copia el contenido en ese directorio. En este caso, cada archivo en /bin
estaría disperso en el directorio de destino. Asi que rsync -av /bin/ .
daría como resultado lo que se muestra en la siguiente imagen.
Es muy importante recordar esta diferencia, ya que usar TAB para autocompletar los nombres de los directorios agrega automáticamente una barra inclinada al final. Así que tenlo en cuenta para evitar crear un lío en el directorio de destino.
Cómo usar rsync para sincronizar con ubicaciones remotas (por ejemplo, servidores)
Lo que se describió en la sección anterior es válido cuando se trabaja con ubicaciones remotas. La única diferencia es que debe anteponer el nombre de usuario y la dirección de inicio de sesión de la ubicación remota. para enviar tu /bin
directorio a una computadora remota, use:
rsync -av /bin your_username@203.0.113.10:/home/your_username
rsync se conecta a través de OpenSSH. Esto significa que debe configurar el servidor OpenSSH y las credenciales de inicio de sesión en el destino remoto de antemano. Tenga en cuenta que your_username
se refiere al nombre de usuario creado en el servidor. Esto puede ser diferente del nombre de usuario que tiene en su máquina local.
Si posee un nombre de dominio y lo apunta a la IP de su servidor, puede usar el dominio en el comando:
rsync -av /bin your_username@example.com:/home/your_username
En transferencias grandes, también es útil comprimir los datos antes de enviarlos por cable agregando el -z
parámetro:
rsync -avz /bin your_username@example.com:/home/your_username
Puede omitir el parámetro de compresión cuando envía archivos que ya están comprimidos (archivos de audio como MP3, videos, imágenes JPEG). No se pueden comprimir más, por lo que en realidad perdería tiempo usando -z
en estos.
Para copiar archivos desde el destino remoto a su computadora local, simplemente invierta las ubicaciones:
rsync -avz your_username@example.com:/bin /home/your_username
Conclusión
Esto cubre los comandos rsync más importantes que necesita saber. Si alguna vez necesita más control sobre cómo sincronizar directorios, consulte el manual de sincronización en línea y desplácese unas cuantas páginas hacia abajo hasta que encuentre «Resumen de opciones».