Estos días hemos estado aprendiendo algunos comandos para hacer copias de seguridad de sistemas de archivos y ficheros de datos, esos comandos son el comando Dump y Restore. Hoy veremos un comando que nos ayuda con el tema de hacer copias de seguridad además es más novedoso que los comandos anteriores y se suele utilizar más para hacer transferencia de datos entre equipos remotos utilizando un canal SSH.
Pero antes de poner todo esto en practica, vamos a conocer un poco más este comando y como instalarlo en nuestro sistema.
¿Qué es Rsync?
Es un binario de código abierto de transferencia de archivos y directorios entre una ubicación y otra. La ventaja de este comando es que permite que la transferencia se mande mediante un canal SSH y que transfiere los archivos o trozos de archivos que han sido modificados en lugar de transferir el archivo completo, es decir que es muy parecido a Dump, pero como ya he dicho se suele utilizar más este comando para la transferencia mediante un canal SSH.
Usos de Rsync:
- Respaldos automáticos a discos o servidores remotos.
- Sincronización de archivos y directorios remotos.
- Transferencia de archivos comunes.
¿Cómo instalar el comando?
Antes de instalar el comando, es probable que nuestro sistema ya venga con esta herramienta instalada, así que probaremos verificar si el comando ya está instalado o no, para ello utilizamos los siguientes comandos rsync --version o which rsync:
Si vemos que no lo tenemos instalado, hacemos un apt-get update, luego un apt-get upgrade y finalmente un apt-get install rsync.
Transferencia de datos dentro del mismo equipo:
Para demostrar lo básico de este comando, vamos a transferir el contenido de un directorio a otro dentro del mismo equipo.
1.Creamos algunos directorios y en uno de ellos metemos contenido:
$ mkdir origen
$ mkdir destino
$ cd origen
~/origen$ touch prueba{1..9}
~/origen$ ls
prueba1 prueba2 prueba3 prueba4 prueba5 prueba6 prueba7 prueba8 prueba9
2.Luego haremos que rsync pase todo el contenido del directorio origen al directorio destino:
~/origen$ cd
~$ rsync -a origen/ destino
La opción -a lo que hace es copiar recursivamente el contenido del directorio origen al directorio destino.
3.Verificamos que verdaderamente se haya pasado al directorio destino:
~$ cd destino/
~/destino$ ls
prueba1 prueba2 prueba3 prueba4 prueba5 prueba6 prueba7 prueba8 prueba9
Esto mismo también lo podríamos haber hecho con el comando cp, por eso voy a enseñaros una ventaja de utilizar rsync:
Para ello agregamos al directorio destino un fichero prueba10 y hacemos lo siguiente:
~/destino$ touch prueba10
~/destino$ cd
~$ rsync -anv destino/ origen
sending incremental file list
./
prueba10
sent 220 bytes received 22 bytes 484.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
La opción -v permite una ver una salida del proceso de transferencia.
La opción -n lo que hace es simular que el archivo prueba10 se haya pasado al directorio origen, de esta manera sabremos si verdaderamente se ha pasado el contenido que ha sido modificado.
* Si no utilizamos la opción -n el archivo prueba10, se pasaría al directorio origen.
Transferencia de datos entre equipos remotos:
Lo primero que haremos será crear una llave SSH a nuestro equipo origen con el comando ssh-keygen -t rsa.
Luego copiaremos nuestra llave SSH en el equipo destino con el comando ssh-copy-id diegokobein@172.22.204.172. En mi caso estoy copiando la llave SSH en una instancia en el cloud que tiene una ip 172.22.204.172 y con el usuario diegokobein.
Cuando vayamos a copiar la llave, nos pedirá la clave de nuestro usuario del equipo destino, una vez hayamos introducido la clave no nos lo volverá a pedir de nuevo.
Ahora vamos con la transferencia remota para ello utilizaremos el siguiente comando: rsync -azP origen/ diegokobein@172.22.204.172:/home/diegokobein/destino
Lo que hacemos con este comando es hace una copia de el directorio origen de nuestra maquina origen al directorio destino de la maquina remota.
La opción -z lo que indica es que los archivos serán comprimidos antes de ser transferidos a la maquina remota y además la transferencia se hará más rápida.
La opción -P nos da la posibilidad de mostrar el progreso y además si hay algún archivo que se haya transferido incorrectamente se volverá a reanudar la copia de ese archivo.
Comprobamos que se haya pasado correctamente en nuestra maquina remota:
~$ ssh diegokobein@172.22.204.172
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jan 29 10:10:25 2016 from 172.22.8.146
diegokobein@oracle:~$ ls /home/diegokobein/destino
prueba1 prueba2 prueba3 prueba4 prueba5 prueba6 prueba7 prueba8 prueba9
Vemos que efectivamente se ha completado la sincronización, como podemos ver este comando da mucho juego y podemos hacer muchísimas cosas con él, en mi opinión me gusta muchísimo más este comando que los que vimos en el post anterior empleando Dump o Restore.
Bueno eso ha sido todo, si tienes cualquier pregunta o sugerencia me lo puedes dejar por los comentarios.
Hasta el próximo post, chau ;D
No hay comentarios:
Publicar un comentario