GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar una copia de seguridad con rsync en Ubuntu 18.04

Rsync (Remote sync) es una herramienta para copiar y sincronizar archivos y carpetas en el mismo servidor o entre diferentes máquinas en Linux.

Lo que distingue a Rsync del clásico "copiar y pegar" es que esta herramienta reconoce automáticamente qué documentos difieren entre dos carpetas, para acelerar el proceso de copia de una carpeta de origen a una de destino.

En este artículo aprenderá cómo instalar, configurar y usar Rsync en Linux Ubuntu 18.04 para sincronizar archivos y carpetas y programar una copia de seguridad periódica de su servidor.

Instalación

Los paquetes rsync ya están presentes en el Repositorio Oficial de Ubuntu. Para instalarlo escribe:

$ sudo apt install rsync

Sintaxis

$ rsync options /path/source/ /path/destination/

Las opciones disponibles son:

  • -v:los archivos y carpetas copiados se mostrarán en el shell

  • -r:para copiar las carpetas y sus contenidos

  • -h:en lugar de mostrar el tamaño de los archivos copiados en bytes, se mostrará un formato de fácil lectura (en lugar de 14.167.396 bytes , se verán 14,17 Mb)

  • -z:para comprimir los datos transferidos

  • -a:muestra la información original del archivo, como marca de tiempo, permisos, propietario, etc.

  • -u:al copiar,

  • --delete:rsync eliminará los archivos en la carpeta de destino que no están presentes en la carpeta de origen.

  • --exclude:ciertos archivos o carpetas se ignorarán al copiar.

  • --progress:muestra el porcentaje del proceso de copia y el tiempo restante.

  • --existente:solo se copiarán los archivos que ya existen en la carpeta de destino.

Sincronización de dos carpetas en la misma computadora

La copia de una carpeta a otra se realiza con el comando "rsync" seguido de la carpeta de origen (desde la cual se copian los elementos) y la carpeta de destino. Independientemente del hecho de que la carpeta a copiar contiene carpetas dentro, es preferible agregar la etiqueta a la etiqueta "-r":

 $ rsync -r path/source path/destination

Toda la carpeta "origen" se copia en la carpeta "destino".

 $ rsync -r ~/source/ ~/destination

El contenido de la carpeta "origen" se copia en la carpeta "destino".

Cuidado con la diferencia entre los dos comandos:al escribir "/" después de la carpeta de origen, se le indica al sistema que copie los archivos contenidos en la carpeta.

No ingresar “/” implica la selección de toda la carpeta y, en consecuencia, la creación de una copia de la carpeta de origen en la carpeta de destino.

Copiar archivos de un solo formato

Rsync también permite la copia de ciertos tipos de archivos únicamente, especificando el formato o el nombre.

Suponiendo que los archivos están en formato "txt", todos los archivos en este formato se pueden copiar escribiendo:

$ rsync path/source_folder/*.txt path/destination_folder

Con "* .txt" ha solicitado expresamente una copia de "todos los archivos .pdf".

Copiando archivos en el protocolo SSH entre dos máquinas

También puede usar el protocolo SSH para copiar sus archivos y carpetas de su computadora a otra. El uso de este protocolo garantiza que, durante la transferencia, todos los archivos se cifran y, por tanto, nadie podrá leerlos.

El comando requiere la opción "-e ssh" seguida del origen y el destino de la copia.

$ rsync -r ssh path/source/ [email protected]_machine:/path/destination/

Se requerirá la contraseña del usuario que accede a la máquina de destino.

Copiar archivos según el tamaño

Rsync filtra los archivos a copiar también en función del tamaño que ocupan en el disco.

$ rsync --max-size=15k path/source_folder/*.* path/destination_folder/*.*

Solo se copiarán los archivos de menos de 15Kb.

Los archivos más grandes serán ignorados.

$ rsync --min-size=20k ~/source_folder/*.* ~/destination_folder/*.*

Solo se copiarán los archivos de más de 20 Kb.
Los archivos más pequeños se ignorarán.

Excluir archivos de la copia según la extensión

Si no desea copiar algunos tipos de archivos, puede usar la etiqueta "--exclude" para excluir algunos archivos de la copia según la extensión.

En el siguiente ejemplo, los archivos en formato .PDF no se copiarán de la carpeta "fuente" a la carpeta "destino".

$ rsync -r --exclude="*.pdf" path/source_folder/ path/destination_folder

Eliminar contenido de la carpeta de origen después de la transferencia

Del mismo modo que el concepto de "cortar y pegar", los archivos rsync se pueden mover de una carpeta de origen a una carpeta de destino. En este caso, los archivos se copian en la carpeta de destino y luego se eliminan de la carpeta de origen.

$ rsync -r --remove-source-files path/source_folder path/destination_folder

Configuración del límite de tasa de transferencia

En caso de copiar a través de la red, es posible que deba establecer un límite de velocidad de carga para sus archivos. En este caso, use la etiqueta "--bwlimit =KBPS", reemplazando "KBPS" con la tasa de transferencia deseada.

$ rsync --bwlimit=KBPS -r ssh source_path/folder [email protected]_receiver:/destination_path

Reemplace "KBPS" con el valor máximo de velocidad de transferencia expresado en KB/s (2048 KB/s =2 MB/s)

Realización de copias periódicas y automatizadas

En el caso de usar rsync para hacer una copia de seguridad pero no quieres teclear los comandos cada vez, hay una herramienta perfecta para ti:Cron.

Ya presente en Ubuntu 18.04, este servicio permite establecer algunas "reglas" para la repetición periódica de algunos comandos.

Para comenzar a crear sus reglas y luego comenzar a configurar su proceso de copia automática, escriba:

$ crontab -e

Se abrirá un editor de texto donde indicar qué comando repetir periódicamente. Una vez configuradas las reglas, guárdelas y ciérrelas.

Cómo configurar un crontab

La escritura del crontab debe seguir una sintaxis precisa, especificando 6 parámetros ordenados:

 m h dom mon dow command
  • m:minutos (0-59)

  • h:horas (0-23)

  • dom:día del mes (1-31)

  • lunes:mes (1-12)

  • dow:día de la semana (0:domingo - 6:sábado)

  • comando:comando a ejecutar

    Ejemplos de posibles configuraciones:

     30 * * * * rsync path/source/*.pdf path/destination

    (cada mes, cada día y cada hora a los 30 minutos, todos los archivos ".pdf" de la carpeta "origen" se copiarán en la carpeta "destino")

    */2 * * * * rsync path/source/*.pdf path/destination (todos los archivos .pdf presentes en la carpeta "origen" en la carpeta "destino" se copian todos los días del mes, cada 2 minutos)

    50 8 * * 1,3 rsync ruta/fuente/*.pdf ruta/destino (el comando para copiar archivos .pdf en la carpeta "fuente" en el "destino" carpeta se ejecuta de lunes a miércoles a las 8:50 am)

    Una vez guardado y cerrado el editor, para ver la lista de crontabs escriba:

    $ crontab -l

    Linux
    1. ¿Cómo eliminar todos los archivos con una extensión particular en una carpeta particular?

    2. ¿Cómo silenciar selectivamente Rsync?

    3. Cómo transferir archivos en Linux con SCP y Rsync

    4. ¿Cómo copio una carpeta con archivos a otra carpeta en Unix/Linux?

    5. ¿Cómo puedo excluir archivos de forma predeterminada con rsync?

    Cómo hacer una copia de seguridad de archivos con Déjà Dup y Duplicity en Ubuntu 18.04 LTS

    ¿Cómo configurar la copia de seguridad de Dropbox con Plesk?

    Cómo configurar el cortafuegos con UFW en Ubuntu Linux

    Cómo instalar 7Zip en Ubuntu 18.04

    Cómo instalar y configurar una VPN con OpenVPN en Ubuntu 18.04

    Cómo configurar un servidor de correo SMTP con Postfix en Ubuntu 18.04