Herramientas de administración del sistema: uso de rsync para administrar la copia de seguridad, la restauración y la sincronización de archivos

Como administrador de sistemas, paso la mayor parte de mi energía en dos cosas (aparte de asegurarme de que haya café): preocuparme por tener copias de seguridad y descubrir la mejor manera de hacer las cosas. Una de mis herramientas favoritas para resolver ambos problemas se llama rsync.

Rsync fue creado por una de las mismas personas que inventaron la samba, Andrew Tridgell. Es una herramienta tan útil y flexible que está incluida en todas las versiones de Linux y ha sido portada a otros sistemas operativos. Más simple, sincronizar es una herramienta para copiar archivos. Sin embargo, es mucho más poderoso que eso.

  • Mantiene dos conjuntos de archivos actualizados y sincronizados.
  • Se ejecuta como un comando y se puede programar.
  • Comprime y encripta el flujo de datos.
  • Utiliza varios tipos de clientes de acceso remoto (SSH y RSH, por ejemplo).

Así que no sorprende que sea el favorito de muchos administradores de sistemas.

Índice

    Los conceptos básicos

    Como el mv y cp comando, en su forma más básica rsync solo necesita una fuente y un destino:

    [[email protected] enable]# rsync ./foo/testfoo ./bar/
    
    [[email protected] enable]# ls -ilR
    .:
    total 8
    5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:15 bar
    5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:08 foo
    
    ./bar:
    total 8
    5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
    4982446 -rw-rw-r-- 1 root       root       8 Jun 11 15:15 testfoo
    
    ./foo:
    total 4
    5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

    copiamos testfoo a la bar directorio telefónico. No es gran cosa, de verdad.

    Ahora agreguemos un archivo a ./foo y resincronizar:

    [[email protected] enable]# touch ./foo/bat.txt
    
    [[email protected] enable]# rsync ./foo/* ./bar/
    [[email protected] enable]# ls -ilR
    .:
    total 8
    5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:45 bar
    5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:25 foo
    
    ./bar:
    total 8
    4992599 -rw-r--r-- 1 root       root       0 Jun 11 15:45 bat.txt
    5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
    4992604 -rw-rw-r-- 1 root       root       8 Jun 11 15:45 testfoo
    
    ./foo:
    total 4
    5002591 -rw-r--r-- 1 root       root       0 Jun 11 15:25 bat.txt
    5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

    Llegados a este punto queremos apuntar un par de cosas. Primero, cuando volvemos a ejecutar rsync, copió testfoo y actualizado en atime. Además, cada vez que copia un archivo, le da al archivo una nueva inode número. Por lo tanto, cuando se trata del sistema de archivos, es un archivo totalmente diferente (porque lo es, copiaba la información cada vez). Por último, tenga en cuenta que cuando rsync el archivo, cambia la propiedad del usuario que ejecutó el comando (root, en este caso).

    Todo esto es importante si vamos a hacer copias de seguridad. Este comportamiento es el mismo que el cp pedido. También podemos usar el cp comando para copiar directorios de forma recursiva, así como para preservar los atributos y la propiedad. La gran diferencia es que rsync puede hacer una suma de verificación de archivo y comparar los archivos de origen y destino, donde cp solo miralo atime valor. RsyncLa funcionalidad adicional de es útil para preservar la integridad de la copia de seguridad (cubriremos la integridad más adelante en esta serie).

    Así que actualicemos solo uno de estos archivos y veamos qué rsync Acaso:

    [[email protected] enable]# echo 'this is new text'>>./foo/testfoo
     
    [[email protected] enable]# ls -al ./foo
     
    -rw-rw-r-- 1 skipworthy skipworthy   25 Jun 11 16:13 testfoo
    
    [[email protected] enable]# rsync -aruv ./foo/* ./bar/
    sending incremental file list
    testfoo
    
    sent 194 bytes  received 35 bytes  458.00 bytes/sec
    total size is 25  speedup is 0.11
    
    [[email protected] enable]# ls -ilR
    .:
    total 8
    5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 16:16 bar
    5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:56 foo
    
    ./bar:
    total 8
    4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
    4998080 -rw-r--r-- 1 root       root        0 Jun 11 15:56 footoo.txt
    5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
    4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo
    
    ./foo:
    total 4
    5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
    4997949 -rw-rw-r-- 1 skipworthy skipworthy  0 Jun 11 15:56 footoo.txt
    5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

    Tenga en cuenta que esta vez usamos algunos interruptores:

    • -a Modo de archivo, preservar mtime, permisos y enlaces simbólicos.
    • -r Modo recursivo, explora todos los directorios y sincronízalos (debe ser redundante con el -a switch, pero siempre lo especifico de todos modos).
    • -u Actualiza los archivos solo si el mtime en la fuente es más reciente.
    • -v El modo detallado le dice lo que está haciendo (siempre es bueno poder monitorear lo que está sucediendo. Otro consejo útil es redirigir esa salida a un archivo y verificarlo más tarde).

    Restaurar el archivo con rsync

    Así que supongamos que es unas semanas más tarde. El CFO llama y dice que algo anda mal: Faltan muchos archivos en su directorio / foo.

    ./foo:
    total 8
    5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
    4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
    5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

    Echamos un vistazo a las copias de seguridad y vemos los archivos que faltan:

    ./bar:
    total 12
    4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
    4994298 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
    4994359 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
    4994367 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
    4994374 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
    4994413 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
    5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
    4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

    Un rápido rsync restaurar:

    [[email protected] enable]# rsync -aruv ./bar/* ./foo
    sending incremental file list
    bat.txt
    laterfiles1.txt
    laterfiles2.txt
    laterfiles3.txt
    laterfiles4.txt
    testbar

    Y:

    ./foo:
    total 12
    4994387 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
    4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
    4994562 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
    4994564 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
    4994565 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
    4994567 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
    4994579 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
    5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

    Los archivos que faltan se restauran o actualizan a partir de las copias de seguridad más recientes, pero los archivos existentes, que no han cambiado, no se modifican. Nótese también que la propiedad de footoo.txt se ha conservado.

    Conclusión

    Le animo a que eche un vistazo (como siempre) a la página del manual para rsyncy prueba este útil comando.

    Aquí hay algunos otros interruptores a considerar:

    • -r (recursivo)
    • -b (copias de seguridad)
    • -R (relativo)
    • -u (actualizar - copiar solo archivos modificados)
    • -P (el progreso)
    • -c (comprimir)
    • -p (mantener permisos)

    En el próximo artículo de esta serie, daremos un paso más y lo veremos desde la distancia. rsync y algunas de las otras características más avanzadas de este comando.

    Artículos de interés

    Subir