Cómo usar rsync para hacer copias de seguridad: Explicando una potente herramienta de transferencia de archivos

Oct. 30, 2020

Es muy importante hacer copias de seguridad de tus datos, ¡nunca se sabe cuándo ocurrirá un desastre! Una herramienta potente y multiplataforma que te ayudará a lograrlo es 'rsync'. En esta publicación, explicaré por qué rsync es útil y cómo puedes usarla para configurar tus propias copias de seguridad.

Rsync

Desde su creación en 1996 (por Andrew Tridgell y Paul Mackerras), rsync se ha convertido en una utilidad estándar disponible en distribuciones populares de GNU/Linux, Apple macOS, FreeBSD, NetBSD, OpenBSD y (a través de Cygwin o WSL) en Windows.

Características principales

Rsync se usa típicamente para sincronizar archivos y directorios entre dos computadoras diferentes. Puede usar SSH para conectarse a otra computadora y transferir archivos. Además de computadoras remotas, puede usar rsync para sincronizar con discos duros externos y unidades de almacenamiento conectadas a la red (NAS). Rsync es popular porque:

Tiene licencia bajo la GNU General Public License, lo que lo convierte en software libre; tanto libre como en "libertad de expresión" como en "gratis"

El algoritmo de Rsync es un tipo de delta encoding, lo que significa que minimiza el tráfico de datos/red ya que solo copia las partes de los archivos que han cambiado. Además, los datos se pueden comprimir para optimizar aún más el tráfico de transferencia de archivos.

Puede reanudar las transferencias interrumpidas mediante la verificación de suma de comprobación. Esto permite a rsync detectar errores al copiar un archivo de un lugar a otro. Si dos archivos difieren en un solo bit, sus sumas de comprobación serían diferentes. La verificación de suma de comprobación es una forma eficiente de verificar que cada byte se haya transferido correctamente a su destino.

Instalación de rsync

Si está en GNU/Linux, *BSD o Apple macOS, probablemente ya tenga rsync instalado. Si está en Windows, puede mirar el Subsistema de Windows para Linux o WSL para obtener acceso a todas las herramientas estándar de GNU/Linux. Como alternativa a WSL, puede usar Cygwin para instalar la gran colección de herramientas GNU y de código abierto en Windows.

Uso típico de rsync

El uso de rsync se realiza desde la línea de comandos o terminal. Ejecuta el comando 'rsync' seguido de indicadores (opcionales), una ruta de origen y una ruta de destino.

Comando rsync típico, mostrando las banderas -arvz, un Mi-Directorio-Fuente y Mi-Directorio-Remoto en un servidor

Usando los indicadores -arvz configura rsync para:

a: modo "archivo" que conserva los permisos, las horas de creación y de última actualización

r: el modo "recursivo" permite a rsync sincronizar recursivamente las subcarpetas dentro de los directorios de origen/destino

v: "verbose" habilitará una salida más detallada en la consola, lo que le permitirá seguir su progreso, línea por línea

z: "compress" habilitará la compresión de datos a medida que se envían a la máquina de destino, lo que reduce la cantidad de datos que se transmiten, útil en conexiones lentas o con medición

--delete: permitirá que los archivos se eliminen en el lado remoto si se eliminan del directorio de origen. ¡Debe tener cuidado con esta opción!

Hay muchos otros indicadores y opciones que le permiten personalizar el comportamiento de rsync según sus necesidades. Debe consultar la página de manual para rsync para obtener una lista completa de todas las opciones.

Cómo usar rsync para hacer copias de seguridad de archivos

En el siguiente ejemplo, usaré rsync para copiar un directorio ("Sample-Files") en mi escritorio de Windows 10 a un servidor remoto. Utilizo WSL en Windows para tener un entorno Debian_GNU/Linux en funcionamiento en mi Terminal de Windows.

Usando rsync en Windows 10 usando WSL

Déjame explicar el comando que uso:

rsync es el nombre del programa que utilizo

-arvz son los indicadores que configuran rsync para hacer una copia de seguridad archivada, incluidas las subcarpetas y transferir datos mediante compresión

/mnt/c/Users/mail/Desktop/Sample-files/ es la ruta al directorio de origen como se ve a través de la estructura de directorios de WSL. Apunta a mi escritorio de Windows (que está en la unidad C:)

willem @ store.willem.com:./Backup es el destino, que debe leerse como "usuario willem en el servidor 'store.willem.com'", y "en ese servidor" use la carpeta "Backup" dentro del directorio de inicio "./" del "usuario willem".

Si ejecuta este comando por primera vez, se muestra la huella digital criptográfica del servidor remoto. Esto se utiliza para garantizar que esté hablando con su servidor. Esto evita que los piratas informáticos se hagan pasar por su servidor sin que usted se dé cuenta (ya que la huella digital es única para su servidor. Si rsync detecta un cambio en esta huella digital, se negará a transferir archivos. ¡Esto es fundamental ya que copiar sus copias de seguridad a un destino remoto aleatorio sería un riesgo potencial de fugas de datos!

Se le solicita su contraseña si se está conectando a través de SSH sin autenticación basada en claves. Esto está bien si tiene la intención de ejecutar su transferencia de archivos manualmente, pero si tiene la intención de automatizar las transferencias, es posible que desee configurar la autenticación basada en claves (usando el práctico comando "ssh-copy-id"). Su computadora podrá entonces iniciar sesión de forma segura en la máquina remota sin necesidad de introducir una contraseña manualmente.

Usando rsync para copiar archivos desde mi escritorio de Windows 10 a un servidor Debian GNU/Linux sobre SSH (usando WSL)

Si rsync puede conectarse correctamente, continuará determinando qué archivos deben transferirse. Si ha configurado el indicador "-v", verá el progreso línea por línea. Una vez completada la transferencia, rsync saldrá con un resumen.

Transferencias incrementales

El truco de fiesta de Rsync es que admite completamente las transferencias de datos incrementales de forma inmediata. Si tiene algunos archivos nuevos y luego ejecuta el mismo comando rsync nuevamente, solo transferirá los archivos que necesitan transferencia.

Después de agregar la foto de la Vía Láctea a mis archivos de ejemplo, ejecuto rsync nuevamente para que transfiera mis archivos de forma incremental, copiando solo el archivo nuevo

Puede ver en la captura de pantalla que rsync detectó automáticamente el nuevo archivo. Solo transfirió ese archivo al servidor remoto. Ahorro de ancho de banda, tiempo y potencia de procesamiento. Funciona con archivos nuevos y archivos que se han actualizado.

Opcionalmente, puede usar el indicador "--delete" para propagar las eliminaciones locales al directorio de destino, creando una imagen espejo perfecta de la estructura de archivos local. Para fines de copia de seguridad, puede considerar omitir esto (ya que puede eliminar archivos sin querer).

Automatización de transferencias y copias de seguridad

Debido a que rsync es "solo un comando de terminal", puede usarlo fácilmente dentro de sus propios scripts. Piense en un script como una colección de comandos rsync que comprenden un conjunto de enlaces de "origen" y "destino" entre sus archivos y sus respectivas ubicaciones de copia de seguridad.

Puede programar la ejecución automática de su script en un día y hora determinados de la semana. En GNU/Linux, *BSD y macOS puede usar cron para hacer esto. En Windows, puede usar la aplicación "Programador de tareas".

Conclusión

Con rsync, puede transferir archivos de su computadora a otro sistema de manera eficiente, segura e incremental. Puede ser una herramienta crucial en su programa de copias de seguridad.

Es gratuito y está ampliamente disponible. Su rendimiento y confiabilidad están ampliamente establecidos. ¡Realmente no hay excusa para que no configure sus copias de seguridad correctamente!