Realizar copias de seguridad automaticas online

En el post anterior vimos como realizar copias diarias de seguridad automáticamente de una base de datos, esta bien poder realizar copias de seguridad de la base de datos en una máquina, pero lo ideal es que esas copias junto con otros ficheros importantes se guarden en otra máquina. En este post vamos ha ver como crear un scipt que copia archivos de una máquina a otra mediante scp, y como autorizar en la máquina destino para permitir realizar las copias sin pedir contraseña.

Vamos a realizar la copia de los archivos de una máquina (serverA) a otra (serverB) mediante SCP (Secure CoPy), que es otra herramienta de SSH (Secure SHell). Para conectarnos de una máquina a otra con ssh o copiar archivos con scp necesitamos logearnos con un usuario y una contraseña, vamos a ver como lanzar el script sin que nos pida esa contraseña configurando en la máquina destino la dirección de la máquina origen como segura para que no nos pida contraseña.

Para esto necesitamos la clave publica de nuestra máquina (igual que vimos con la herramienta bazaar), para generarla podemos hacerlo asi:

root@serverA:~# ssh-keygen -t rsa

y el resultado es:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@serverA
The key's randomart image is:
+--[ RSA xx]----+
|                 |
|         x        |
|        xx        |
|         xx       |
|        xxx      |
|       xxx       |
|        xxxxx   |
|         xxxx    |
|        xxxxxx   |
+-----------------+

esto nos genera el fichero /root/.ssh/id_rsa.pub que es nuestra clave publica del servidorA.

Ahora tenemos que copiar el contenido de este fichero en el servidor en el que queremos logearnos en el fichero /home/usuario/.ssh/authorized_keys, si este fichero no existe directamente podemos copiarlo y renombrarlo, asi desde la primera máquina (serverA) podemos hacer:

root@serverA:~# scp /root/.ssh/id_rsa.pub usuario@serverB:/home/usuario

Luego en el servidorB, sin no existe el fichero /home/usuario/.ssh/authorized_keys podemos hacer:

usuario@serverB:/home/usuario# mv id_rsa.pub /home/usuario/.ssh/authorized_keys

Si existe el fichero (porque ya tengamos otras máquinas autorizadas) podemos hacer:

usuario@serverB:/home/usuario# cat id_rsa.pub | sudo tee -a /home/usuario/.ssh/authorized_keys

y con esto añadimos la clave publica de la primera máquina.

Ahora desde la primera máquina podemos copiar ficheros en la segunda, sin que nos pida contraseña con este comando:

scp fichero_a_copiar.tgz usuario@serverB:/home/usuario/copias/

También podemos crear un fichero:

touch copia_en_servidorB.sh

hacerlo ejecutable:

chmod +x copia_en_servidorB.sh

y por último programarlo con el cron, para esto ejecutamos

crontab -e

y añadimos la siguiente linea

 0 7 * * * /home/usuario/copia_en_servidorB.sh >> /home/usuario/copia_en_servidorB.log 2>&1

con esto lo que hacemos es programar todos los días a las 7:00 de la mañana la ejecución del script.

Tags: ,

Deja un comentario