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.

4 comentarios sobre “Realizar copias de seguridad automaticas online

  1. Manuel

    Hola gracias por la informacion, tengo una duda y espero me puedas ayudar, quiero hacer eso pero con 2 equipos, es decir, tengo un servidorA, servidorB y quiero copiar de ambos automaticamente en el servidorC.
    Lo que tu indicas me funciona sin problemas pero cuando agrego la informacion del servidorB se pierde la del servidorA.
    Gracias espero por tu ayuda.

  2. Angel Moya Autor del artículo

    Hola, simplemente modificando el script para guardarlo en rutas distintas o con un nombre diferente no tendrías que tener ningún problema.

  3. francisco

    Estimado Angel Moya, muy bueno tu exposición. pero en la parte donde dice /home/usuario/.ssh/authorized_keys, estos dos últimos ficheros, lo creamos cierto??? ya que en el servidor B no existen. y que tipo de permisos tengo que darle a cada fichero. agradecería tu respuesta.
    saludos.

    seguí todo los pasos pero cuando quiero acceder a al sevidor B aun me pide contraseña del servidor b.

  4. Angel Moya Autor del artículo

    Buenas, correcto, hay que crear los ficheros, con que tengan permiso de lectura para el usuario del que es el home será suficiente.

Deja un comentario

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