apt-get install openssh-server openssh-client rsync
En primer lugar hay que permitir que el servidor donde se van a realizar las copias de seguridad pueda acceder a la estación de trabajo sin contraseña, empleando claves RSA
sin contraseña.
Para ello ejecutamos en el servidor lo siguiente, teniendo backuphcd
como el usuario del servidor que hace los backups:
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/backuphcd/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/backuphcd/.ssh/id_rsa.
Your public key has been saved in /home/backuphcd/.ssh/id_rsa.pub.
The key fingerprint is: 91:7e:ec:01:a2:e2:f5:d7:87:f6:2c:f7:38:87:71:04
backuphcd@sistemas2
Es importante no introducir contraseña.
Crear la carpeta para el usuario backuphcd logueado como adminstrador.
cd /home
sudo mkdir backuphcd
sudo chown -R backuphcd backuphcd
sudo chgrp -R migracion backuphcd
exit (termina sesión con el usuario administrador)
Copiar clave rsa publica creada en el servidor con el usuario backuphcd
scp /home/backuphcd/.ssh/id_rsa.pub backuphcd@192.168.1.xx:/home/backuphcd
Loguearse en el cliente con el usuario backuphcd
ssh 192.168.1.xx -l backuphcd (nos pide la contraseña)
mkdir .ssh
cat id._rsa.pub >> /home/backuphcd/.ssh/authorized_keys
rm id_rsa.pub
Con estos pasos ya podemos crear procesos automatizados en el servidor que conecten vía SSH
a la estación de trabajo sin que se les pida contraseña, lo cual es razonable porque no pueden introducirla.
Crear la carpeta para alojar el respaldo de los clientes y los scripts de backups.
cd /
sudo mkdir backups
sudo mkdir -p backups/nombre_cliente ( esta carpeta para cliente en particular)
sudo chown -R backuphcd:migracion backups
Crear script para cada cliente.
sudo nano nombre_cliente.sh
#! /bin/bash
TIMESTAMP=$(date "+%d-%m-%Y-hs%H:%M")
FROM="backuphcd@nombre_cliente:/ruta_carpeta_a_respaldar"
TO="/backups/nombre_cliente/"
if rsync --delete -avb $FROM $TO-nombre_cliente-$TIMESTAMP
then
echo "BACKUP OK"
else
echo "BACKUP FAILED"
fi
Crear script principal que llama a todos los demás.
sudo nano backup.sh
#! /bin/bash
/backups/nombre_cliente1.sh
/backups/nombre_cliente2.sh
/backups/nombre_clienten.sh
sudo nano /etc/crontab
# /etc/crontab: system-wide crontabResaltada la linea en cuestión que ejecuta /backups/backup.sh todos los dias a las 12:45 por el usuario bakuphcd.
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6
* * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
45 12 * * * backuphcd /backups/backup.bash
#
Con esto tenemos bacups incrementales dentro de una carpeta con la fecha y hora de realización.
Saludos Hugo Acosta.
2 comentarios:
Hola!
Justo andaba buscando informacion para hacer algo asi.
Logré hacer que funcionara, pero siempre me pide la contraseña del usuario que respalda.
Creo que tengo el lio entre cual es el servidor y cual el cliente. Segun yo, el servidor es el "equipo que tiene los archivos que se necesitan respaldar" y el cliente "la maquina que va a ir a buscar esos respaldos para almacenarlos en su disco"
comoo los definiste?
saludos y gracias por la informacion.
Hola, yo llamo servidor al equipo que almacena los respaldos de los demas equipos que necesitan respaldar su info, para que la clave publica funcione tenes q crearla con el usuario que vas a usar para realizar los respaldos (osea el que ejecuta el script) en el servidor (equipo que almacena los archivos) luego esa clave se exporta a los clientes tal como se explica en el articulo, cualquier cosa me avisas y trato de darte una mano, saludos...
Publicar un comentario