GNU/Linux >> Tutoriales Linux >  >> Linux

5 consejos avanzados de rsync para administradores de sistemas Linux

En un artículo anterior titulado Herramientas de administración de sistemas:uso de rsync para administrar la copia de seguridad, la restauración y la sincronización de archivos, hablé de cp y sftp y analizó los conceptos básicos de rsync para mover archivos. También hay un par de otros excelentes artículos aquí sobre Habilitar Sysadmin en tar y SSH que debería consultar. Copiar archivos hacia y desde sistemas remotos y tener una manera fácil de ejecutar una copia de seguridad de algo en lo que está trabajando (o, para el caso, datos críticos de la empresa) son herramientas básicas y útiles en la caja de herramientas del administrador de sistemas que uso una y otra vez. A veces, sin embargo, es posible que desee hacer algo un poco más sofisticado, como mover datos a través de un enlace menos confiable o más lento. Rsync puede proporcionar cifrado para protegerlo en tránsito, compresión para que fluya mejor y sumas de verificación para asegurarse de que obtiene lo que esperaba.

[ A los lectores también les gustó: Cómo copiar archivos de forma segura entre hosts Linux mediante SCP y SFTP ]

Mantenimiento de un sitio web

Primero comencé a usar rsync para sincronizar una versión local de un sitio web que administré en la Edad Media cuando CI/CD era solo un guiño en los ojos de su padre. Podría mantener una copia local para trabajar y también tener una copia de seguridad de la última versión del sitio. Usaré ese escenario como mi ejemplo. Puedes usar rsync para sincronizar cualquier sistema de archivos remoto para copias de seguridad o como una forma rápida de crear una tubería de prueba a producción. También lo usé para sincronizar un directorio y luego usé tar para crear copias de seguridad locales:

skipworthy  ~  enable  websync  ls -al
total 8
drwxrwxr-x 2 skipworthy skipworthy 4096 Dec 16 13:57 .
drwxrwxr-x 5 skipworthy skipworthy 4096 Dec 16 14:01 ..
 skipworthy  ~  enable  websync  rsync -aruv 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
enable/
enable/bar
enable/foo
enable/index

sent 85 bytes  received 229 bytes  209.33 bytes/sec
total size is 0  speedup is 0.00
skipworthy  ~  enable  websync  ls -l
total 4
dr-xr-xr-x 2 skipworthy skipworthy 4096 Dec 16 13:49 enable

Como antes con el rsync local , estamos ejecutando en modo de archivo, preservando mtime y atributos de archivo, recurrentes en subdirectorios y solo actualizando datos que son nuevos o modificados.

Nota :-v casi siempre significa detallado , enviando la salida a la consola.

Entonces, digamos que quiero agregar una página al sitio y subirla:

skipworthy  ~  enable  websync  rsync -aruv ./* 192.168.11.111:/usr/share/httpd/enable
sending incremental file list
pagetwo
rsync: recv_generator: mkdir "/usr/share/httpd/enable/enable" failed: Permission denied (13)

Este es un buen momento para notar que hay algunas cosas en las que debe pensar al usar rsync para enviar archivos. Rsync necesita permiso para todo el árbol de directorios, no solo para el directorio de destino. Hay varias maneras de lograr esto. Por un lado, es posible especificar el uid y gid del rsync demonio en /etc/rsyncd.conf . Otra forma es ejecutar rsync como usuario con los permisos necesarios. Ambos pueden ser problemáticos en un entorno seguro, así que tenga cuidado aquí.

Además, tenga en cuenta que, de forma predeterminada, cuando usa rsync remotamente, te estás conectando directamente al rsync servicio en el puerto 873 . Debe pensar en eso al configurar las reglas y los permisos del firewall. Además, hay permisos de SELinux, que son otra discusión y no están dentro del alcance de este artículo. Una solución al problema de los permisos de directorio y las preocupaciones de seguridad, en general, es usar SSH (esto debería sonar familiar ahora). SSH configura un túnel encriptado y se puede configurar para escuchar en cualquier puerto, sin mencionar que puede especificar una clave SSH para asegurar aún más la conexión y hacer que las conexiones remotas sean un poco más fáciles de automatizar.

Características avanzadas

Para el siguiente ejemplo, voy a empujar estos cambios como raíz. Por favor, no seas como yo:

rsync -aruv -e ssh  ./* [email protected]:/usr/share/httpd/enable
[email protected]'s password:
sending incremental file list
pagetwo

sent 246 bytes  received 36 bytes  43.38 bytes/sec
total size is 31  speedup is 0.11

Tenga en cuenta nuevamente que las opciones habituales de SSH están disponibles para las conexiones, incluida la especificación del puerto y la ubicación de la clave. Rsync también le permite seleccionar la opción de shell remoto, siempre que esté instalado en ambos extremos y configurado en .ssh/config .

Sumas de comprobación

Mencioné las sumas de verificación anteriormente, y hay dos cosas potencialmente útiles aquí. Primero, rsync ejecuta una suma de verificación de forma predeterminada y luego la verifica en el objetivo, lo que le advertirá sobre la posibilidad de que los datos se pierdan o se dañen en el vuelo.

En segundo lugar, también puede usar sumas de verificación para determinar qué archivos transferir (es decir, qué archivos son realmente diferentes entre el origen y el destino), lo cual es útil si no está seguro de si el mtime /hora representa la versión real del archivo que desea. He tenido sistemas de archivos que estaba tratando de sincronizar y que estaban siendo tocados por otra aplicación, por lo que los tiempos eran incorrectos.

skipworthy  ~  enable  websync  rsync -aruv -e ssh --checksum 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 364 bytes  780.00 bytes/sec

Nota :Esto genera una sobrecarga adicional en el procesamiento y la transferencia, ya que se genera una suma de verificación para cada archivo en cada lado y luego se compara.

Compresión

Otro truco útil es la compresión. El -z La opción comprimirá la transmisión, --zc establece el tipo de compresión y --zl establece el nivel:

skipworthy  ~  enable  websync  rsync -aruv -e ssh --zc=zlib --zl=6 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 248 bytes  548.00 bytes/sec
total size is 31  speedup is 0.11

Si no especifica el tipo o el nivel, rsync utiliza una lista proporcionada en RSYNC_COMPRESS_LIST variable de entorno para negociar un tipo y nivel de compresión comunes.

[ ¿Busca más información sobre la automatización de sistemas? Comience con The Automated Enterprise, un libro gratuito de Red Hat. ] 

Resumir

Ahí lo tienes:rsync es otra de esas herramientas que sigue siendo útil y relevante para la administración de sistemas Linux, una herramienta que me alegró tener muchas veces en mi carrera. Hay muchas, muchas más cosas que puede hacer con él que no tuvimos espacio para explorar aquí. Como siempre, consulte las páginas del manual.


Linux
  1. Consejos de Linux para usar cron para programar tareas

  2. 3 consejos para imprimir con Linux

  3. Cómo usar rsync avanzado para grandes copias de seguridad de Linux

  4. 8 consejos para una automatización confiable del sistema Linux

  5. 3 sólidos consejos de autoevaluación para administradores de sistemas

Consejos para usar el comando superior en Linux

Ejemplos de comandos Rsync de Linux para principiantes

Guía de inicio rápido de Ansible para administradores de sistemas Linux

30 ejercicios de permisos de Linux para administradores de sistemas

40 comandos de red Linux útiles para administradores de sistemas modernos

Audacious:un reproductor de audio avanzado para Linux