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.