Cómo hacer una copia de seguridad en Linux con rsync

Rsync es una utilidad para realizar copias de seguridad en UNIX/Linux. rsync significa sincronización remota.

La utilidad rsync se utiliza para sincronizar los archivos y directorios de una ubicación a otra de una manera efectiva. La ubicación de la copia de seguridad podría estar en el servidor local o en el servidor remoto.

Características importantes de rsync

  • Velocidad: la primera vez, rsync replica todo el contenido entre los directorios de origen y destino. La próxima vez, rsync transfiere solo los bloques o bytes modificados a la ubicación de destino, lo que hace que la transferencia sea realmente rápida.
  • Seguridad: rsync permite el cifrado de datos utilizando el protocolo ssh durante la transferencia.
  • Menos ancho de banda: rsync utiliza la compresión y descompresión del bloque de datos por bloque en el extremo de envío y de recepción, respectivamente. Por lo tanto, el ancho de banda utilizado por rsync siempre será menor en comparación con otros protocolos de transferencia de archivos.
  • Privilegios: no se requieren privilegios especiales para instalar y ejecutar rsync

Sintaxis

La fuente y el destino pueden ser locales o remotos. En el caso de ser remoto, debes especificar el nombre de inicio de sesión, el nombre del servidor remoto y la ubicación.

Ejemplos de uso de rsync

Ejemplo 1. Sincronizar dos directorios en un servidor local

Para sincronizar dos directorios en una computadora local, debes usar el comando rsync -zvr.

En el ejemplo rsync anterior:

  • -z es habilitar la compresión
  • -v detallado
  • -r indica recursivo

Ahora veamos la marca de tiempo en uno de los archivos que se copió de origen a destino. Como se ve a continuación, rsync no conservó las marcas de tiempo durante la sincronización.

Ejemplo 2. Conservar las marcas de tiempo durante la sincronización usando rsync -a

La opción rsync -a indica el modo de archivo. La opción -a hace lo siguiente,

  • Modo recursivo
  • Conserva enlaces simbólicos.
  • Preserva los permisos
  • Conserva la marca de tiempo
  • Conserva propietario y grupo.

Ahora, ejecutando el mismo comando proporcionado en el ejemplo 1 (Pero con la opción rsync -a) como se muestra a continuación:

Como puedes ver a continuación, rsync conservó las marcas de tiempo durante la sincronización.

Ejemplo 3. Sincronizar solo un archivo

Para copiar solo un archivo, especifica el nombre del archivo al comando rsync, como se muestra a continuación.

Ejemplo 4. Sincronizar archivos de un directorio local a uno remoto

rsync te permite sincronizar archivos/directorios entre un sistema local uno remoto.

Mientras realizas la sincronización con el servidor remoto, debes especificar el nombre de usuario y la dirección IP del servidor remoto. También debes especificar el directorio de destino en el servidor remoto. El formato es username@ machinename:path

Como ves arriba, te pide una contraseña mientras realizas rsync desde el servidor local al remoto.

En ocasiones, no deseas ingresar la contraseña mientras realiza una copia de seguridad de los archivos del servidor local al remoto.

Por ejemplo, si tienes un shell script de copia de seguridad, que copia los archivos del servidor local al remoto mediante rsync, necesitas la capacidad de rsync sin tener que ingresar la contraseña.

Ejemplo 5. Sincronizar archivos del directorio remoto al local

Cuando desees sincronizar archivos del directorio remoto al local, especifica la ruta remota en la fuente y la ruta local en el destino como se muestra a continuación.

Ejemplo 6. Shell remoto para sincronización

rsync te permite especificar el shell remoto que deseas usar. Puedes usar rsync ssh para habilitar la conexión remota segura.

Usa rsync -e ssh para especificar qué shell remoto usar. En este caso, rsync utilizará ssh.

Ejemplo 7. No sobrescribir los archivos modificados en el destino

En una situación de sincronización típica, si un archivo se modifica en el destino, es posible que no queramos sobrescribir el archivo con el archivo antiguo del origen.

Puedes usar la opción rsync -u para hacer exactamente eso. (es decir, no sobrescribir un archivo en el destino, si se modifica). En el siguiente ejemplo, el archivo llamado Basenames ya está modificado en el destino. Por lo tanto, no se sobrescribirá con rsync -u.

Ejemplo 8. Sincronizar solo la estructura del árbol de directorios (no los archivos)

Utiliza la opción rsync -d para sincronizar solo el árbol de directorios desde el origen al destino. El siguiente ejemplo, sincroniza solo el árbol de directorios de manera recursiva, no los archivos en los directorios.

Ejemplo 9. Ver el progreso de rsync durante la transferencia

Cuando utilizas rsync para copias de seguridad, es posible que desees saber el progreso de la copia de seguridad. es decir, cuántos archivos se han copiado, a qué velocidad se están copiando el archivo, etc.

La opción rsync –progress muestra el progreso detallado de la ejecución de rsync como se muestra a continuación.

Ejemplo 10. Eliminar los archivos creados en el destino

Si un archivo no está presente en el origen, pero sí en el destino, es posible que desees eliminar el archivo en el destino durante rsync.

En ese caso, usa la opción –delete como se muestra a continuación. La opción de eliminación rsync elimina los archivos que no están en el directorio de origen.

Target tiene el nuevo archivo llamado new-file.txt, cuando se sincroniza con la fuente con la opción –delete, eliminó el archivo new-file.txt

Ejemplo 11. No crear un archivo nuevo en el destino

Si lo deseas, puedes actualizar (Sincronizar) solo los archivos existentes en el destino. En caso de que la fuente tenga archivos nuevos, que no están allí en el destino, puedes evitar crear estos nuevos archivos en el destino. Si deseas esta función, usa la opción –existing con el comando rsync.

Primero, agrega new-file.txt en la fuente.

A continuación, ejecuta el rsync desde el destino.

Si ves la salida anterior, no se recibió el nuevo archivo new-file.txt

Ejemplo 12. Ver los cambios entre el origen y el destino

Esta opción es útil para ver la diferencia en los archivos o directorios entre el origen y el destino.

En el directorio fuente:

$ ls -l / var / lib / rpm

En el directorio destino:

En el ejemplo anterior, entre el origen y el destino, hay dos diferencias. Primero, propietario y grupo del archivo Dirname difiere. A continuación, el tamaño difiere para el archivo Basenames.

Ahora veamos cómo rsync muestra esta diferencia. La opción -i muestra los cambios del ítem.

En la salida, se muestran unas 9 letras delante del nombre del archivo o del directorio que indica los cambios.

En nuestro ejemplo, las letras frente a Basenames (and Dirnames) dicen lo siguiente:

Ejemplo 13. Incluir y excluir patrón durante la transferencia de archivos

En el ejemplo anterior, se incluye solo los archivos o directorios que comienzan con ‘P’ (usando rsync include) y excluye todos los demás archivos. (usando rsync exclude ‘*’)

Ejemplo 14. No transferir archivos grandes

Puedes decirle a rsync que no transfiera archivos que sean mayores que un tamaño específico usando la opción rsync –max-size.

max-size = 100K hace que rsync transfiera solo los archivos que sean menores o iguales a 100K. Puedes indicar M para megabytes y G para gigabytes.

Ejemplo 15. Transferir el archivo completo.

Una de las características principales de rsync es que transfiere solo el bloque modificado al destino, en lugar de enviar todo el archivo.

Si el ancho de banda de la red no es un problema para ti (pero la CPU lo es), puedes transferir el archivo completo, usando la opción rsync -W. Esto acelerará el proceso rsync, ya que no tiene que realizar la suma de comprobación en el origen y el destino.