-
-
Save dariodiaz/3516783 to your computer and use it in GitHub Desktop.
ssh: Rsync con ssh, o sea para que no pida contraseñas, es decir,con certificados
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Realizar backups de manera facil con rsync y ssh | |
Enviado por RazaMetaL el Mié, 2007-02-14 14:27. | |
Tengo dos servidores, uno tiene un eggdrop que guarda el log de actividad de un canal en /home/bot/logs/canal. Hasta ahi todo esta muy bien, pero requiero que esos logs se publiquen en un sitio web que se encuentra en otro servidor. | |
La manera mas sencilla y practica que encontre para hacer esta tarea fue usando rsync para sincronizar los archivos de log desde un servidor a otro y que solo se copien los archivos nuevos o modificados. | |
Primero vamos a decidir las opciones para rsync, en mi caso y como lo explico en el parrafo anterior requiero copiar todos los archivos al nuevo servidor, despues que copie solo los nuevos archivos y/o los modificados. Todo esto lo logro pasando las opciones -avz y -e ssh a rsync. | |
-a para copiar recursivamente manteniendo privilegios, fecha de creacion, permisos, etc.; | |
-v para incrementar el nivel de detalle de la operacion; | |
-z para comprimir los datos, asi la transferencia es mas rapida; | |
-e ssh para usar ssh para copiar los archivos de un servidor a otro. | |
Puedo usar tambien --delete-after para borrar los archivos que hayan sido borrados antes de realizar el backup en el servidor de logs. | |
Para ilustrar el ejemplo voy a asumir la siguiente configuracion: | |
Cita: | |
servidor de logs : 192.168.0.100 | |
servidor web : 192.168.0.200 | |
rsync lo voy a ejecutar con un cron en el servidor web | |
Procedimiento: | |
1.- Instalamos rsync en el servidor web, en Debian basta con hacer un: | |
aptitude install rsync | |
2.- Ejecutamos rsync en 192.168.0.200: | |
rsync -e ssh -avzn [email protected]:/home/bot/logs/canal /var/www/logs/canal/ | |
Si todo esta bien tendremos un mensaje indicando los archivos recibidos, la cantidad de bytes y la velocidad de transferencia. | |
3.- Hasta aqui todo esta bien, pero si necesitamos hacer esto automaticamente cada hora mediante cron tenemos que lograr que ssh no nos pida contrasena. Para lograrlo realizamos el siguiente procedimiento: | |
Creamos una llave publica y una llave privada: | |
ssh-keygen -tdsa | |
Presionando solo enter en todas las preguntas que el comando anterior requiere vamos a tener nuestra llave publica en /home/usuario/.ssh/id_dsa.pub. Copiamos esta llave al servidor 192.168.0.100: | |
cd /home/usuario/.ssh/ | |
cat id_dsa.pub | ssh [email protected] "cat - >> /home/bot/.ssh/authorized_keys" | |
Probamos que todo funcione haciendo: | |
ssh -l bot 192.168.0.100 | |
Si no nos pide contrasena... podemos continuar con el siguiente paso. | |
4.- Ahora que 192.168.0.100 no nos pide contrasena podemos automatizar el proceso. Debemos ejecutar este comando en 192.168.0.200 como una tarea cada n cantidad de tiempo y desde luego podemos tener un registro de que archivos se van copiando: | |
crontab -e | |
Para ejecutar el backup cada hora agregamos en 192.168.0.200: | |
0 * * * * rsync -e ssh -avz [email protected]:/home/bot/logs/canal /var/www/logs/canal/ 2>&1 > /var/log/rsync-backup.log |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment