Como administrador de sistemas, gasto 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 y la más simple 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 Samba, Andrew Tridgell. Es una herramienta tan útil y flexible que se incluye en todas las versiones de Linux y se ha portado a otros sistemas operativos. Simplemente, rsync 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 cifra el flujo de datos.
- Utiliza múltiples tipos de clientes de acceso remoto (SSH y RSH, por ejemplo).
Así que no sorprende que sea el favorito de muchos administradores de sistemas.
Lo básico
Como el mv
y cp
comando, en su forma más básica rsync
solo necesita un origen y un destino:
[root@milo enable]# rsync ./foo/testfoo ./bar/
[root@milo 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. No es gran cosa, en realidad.
Ahora, agreguemos un archivo a ./foo
y volver a sincronizar:
[root@milo enable]# touch ./foo/bat.txt
[root@milo enable]# rsync ./foo/* ./bar/
[root@milo 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
En este punto, queremos señalar un par de cosas. Primero, cuando volvimos a ejecutar rsync
, volvió a copiar testfoo
y actualizó el atime
. Además, cada vez que copia un archivo, le da al archivo un nuevo inode
número. Por lo tanto, en lo que respecta al sistema de archivos, es un archivo totalmente diferente (porque lo es:copió todo la información cada vez). Finalmente, tenga en cuenta que cuando rsync
el archivo, cambia la propiedad al usuario que ejecutó el comando (root, en este caso).
Todo esto es importante si queremos hacer copias de seguridad. Este comportamiento es el mismo que el cp
dominio. También podemos usar el cp
Comando para copiar directorios recursivamente, así como preservar atributos y propiedad. La gran diferencia es que rsync
puede hacer una suma de verificación del archivo y comparar los archivos de origen y destino, donde cp
solo mira el atime
valor. Rsync
La funcionalidad adicional de es útil para preservar la integridad de la copia de seguridad (hablaremos de la integridad más adelante en esta serie).
Así que actualicemos solo uno de estos archivos y veamos qué rsync
hace:
[root@milo enable]# echo 'this is new text'>>./foo/testfoo
[root@milo enable]# ls -al ./foo
-rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo
[root@milo 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
[root@milo 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, conservamtime
, permisos y enlaces simbólicos.-r
Modo recursivo, profundiza en cualquier directorio y los sincroniza (debería ser redundante con-a
cambiar, pero siempre lo especifico de todos modos).-u
Solo actualiza archivos simtime
en la fuente es más reciente.-v
Modo detallado, le dice lo que está haciendo (siempre es bueno poder monitorear lo que está sucediendo. Otro truco útil es canalizar esta salida a un archivo y verificarlo más tarde).
Restaurar archivo con rsync
Así que supongamos que es unas semanas más tarde. El director financiero 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:
[root@milo 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 cambiaron, se dejan solos. Además, tenga en cuenta que la propiedad de footoo.txt
se conservó.
Resumir
Te animo a echar un vistazo (como siempre) a la página man de rsync
y pruebe este útil comando.
Aquí hay algunos cambios más a considerar:
-r
(recursivo)-b
(copias de seguridad)-R
(pariente)-u
(actualizar - copiar solo archivos modificados)-P
(progreso)-c
(comprimir)-p
(conservar permisos)
En el próximo artículo de esta serie, iremos un poco más allá y veremos el rsync
remoto. y algunas de las otras características más avanzadas de este comando.
[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ]