Un poco de rsync

Algunas veces necesitamos hacer copias de directorios, archivos de un servidor a otro, rsync es una herramienta fantástica, en esta ocasión desde un Red Hat Enterprise Linux Server 6 haremos los ejercicios.

Nuestro sistema debe estar suscrito en caso contrario visite: https://access.redhat.com/articles/rhsm-cheat-sheet

También es posible necesite hacer un repositorio local con la misma media de instalación, si este fuera el caso visite: https://access.redhat.com/solutions/328863

Es momento de instalar paquetes.

$ sudo yum install rsync -y

$ man rsync <– Para saber un poco más acerca de, puedes salir de la página del manual presionando «q»

Ahora vamos a crear una llave para root y en las conexiones de un servidor a otro no nos pida la contraseña. Desde un equipo llamada cliente.larenata.com (192.168.122.35) a otro equipo llamado server.larenata.com (192.168.122.152).

[root@cliente ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
3a:61:a9:8z:d0:e8:3d:dh:53:06:9a:6c:3e:ed:6b:89 root@cliente.larenata.com
The key’s randomart image is:
+–[ RSA 2048]—-+
|                 |
|                 |
|                 |
|   .   .         |
|  + . o S        |
| = . = . o       |
|+ . + + +        |
|+… E.=         |
|o. .o.++o        |
+—————–+

[root@cliente ~]# ssh-copy-id root@192.168.122.152
root@192.168.122.152’s password:
Now try logging into the machine, with «ssh ‘root@192.168.122.152′», and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

[root@cliente ~]# ssh root@192.168.122.152
Last login: Tue Mar  7 16:59:51 2017 from server.larenata.com
[root@server ~]#  <– Observe que ya está conectado al servidor.

Ahora hagamos un directorio en el servidor llamado backup, en donde dejaremos todos los archivos y dentro dos sub-directorios o los que necesites.

[root@server backups]# mkdir -p /var/backups/centro{1,2}

Ahora que podemos hacer conexión sin pedir contraseña de manera segura por la infraestructura de llave pública y privada, hagamos en el cliente carpetas y archivos para hacer la primer copia, los directorios creados serán dird hast dirg y dentro archivos de file1.txt al file10.txt.

[centro1@server ~]$ for i in {d..g}; do  mkdir dir$i; for j in {1..10};  do  touch dir$i/file$j.txt; done; done

[centro1@cliente ~]$ ls -l
total 16
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dird
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dire
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dirf
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dirg

Para después aplicar rsync

[root@cliente ~]# rsync -avzh -e ssh –exclude=’.*’ /home/centro1/ root@192.168.122.152
:/var/backups/centro1
sending incremental file list
./
dird/
…[salida recortada]
dirg/
…[salida recortada]
dirg/file9.txt

sent 2.03K bytes  received 791 bytes  5.63K bytes/sec
total size is 0  speedup is 0.00

En esta primer copia las opciones son:

  • -a, –archive               archive mode; equals -rlptgoD (no -H,-A,-X).
  • -v, –verbose               increase verbosity.
  • -z, –compress              compress file data during the transfer.
  • -h, –human-readable        output numbers in a human-readable format.
  • -e, –rsh=COMMAND           specify the remote shell to use.
  • –exclude=PATTERN       exclude files matching PATTERN, en este caso todos los archivos ocultos ‘.*’.

Ahora vamos a generar más directorios y archivos en el cliente para sincronizar la copia remota con los cambios del directorio del cliente.

[centro1@cliente ~]$ for i in {1..10}; do  mkdir dir$i; for j in {1..20};  do  touch dir$i/file$j.txt; done; done

Al listar lo que hay en el directorio podrás observar dir1 al dir10 y dentro de cada dir#/ 20 archivos (file1.txt al file20.txt).

Ahora vamos hacer la copia, pero sólo de lo nuevo.

[root@cliente ~]# rsync -avzh -b -e ssh –exclude=’.*’ /home/centro1/ root@192.168.122.
152:/var/backups/centro1
sending incremental file list
dir1/
dir1/file1.txt
…[salida recortada]

dir9/file9.txt
sent 10.26K bytes  received 3.86K bytes  9.41K bytes/sec
total size is 0  speedup is 0.00

Observe que nada más se han enviado los nuevos directorios, por la opción b –backup                make backups (see –suffix & –backup-dir).

Bien como ejercicio, hemos creado en /var/backups/centro1 y centro2, repite la creación de directorios con archivos y aplica rsync.

Suerte.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Eres humano? *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.