Академический Документы
Профессиональный Документы
Культура Документы
Pgina 1 de 7
ltimamente si hay algo que escasea en mi vida es el tiempo, el tema sobre el que habla este articulo no es otro que el de gastar un poco de tiempo para ahorrarlo en un futuro no muy lejano. El hacer copias de seguridad de los datos importantes peridicamente es algo que hace tiempo necesitaba automatizar ya que siempre suelo hacerlo a mano. Si hay algo que tenemos que tener en cuenta cuando tenemos un Servidor Web es que todo lo que hemos instalado desde el sistema operativo como las Webs, Bases de datos y dems cosas importantes estn grabadas dentro de un disco duro que puede tarde o temprano fallar. Las copias de seguridad es algo que es necesario hacerlas ya que si un da el disco duro de nuestro servidor quiebra puede darnos mas de un dolor de cabeza si no las tenemos. En este tutorial os voy a contar la forma de hacerlo olvidndonos de todo para que tan solo tengamos que preocuparnos de restablecer nuestras copias de seguridad automticas una vez tengamos problemas, mientras tanto podremos olvidarnos y sentirnos seguros . En mi caso y para ponernos en situacin os cuento que dispongo de dos servidores web conectados a Internet las 24 h. Uno es remoto y el otro esta en mi casa. Los dos disponen del puerto 22 abierto y aceptan conexiones seguras por SSH
Contando con esto y para practicar con este tutorial necesitamos tener dos maquinas conectadas las 24 h a Internet ya que vamos a automatizar todo el proceso de backup incluyendo los directorios donde se alojan nuestras webs, sus bases de datos MySQL y las enviaremos desde el servidor remoto hacia nuestro servidor en casa. Esto lo aremos de forma programada por lo que podremos
http://www.forat.info/2010/05/10/backup-automatico-seguro-entre-servidores-debian/
06/09/2011
Pgina 2 de 7
decirle a nuestro servidor remoto que cumpla con sus tareas y despus nos las envi a nuestro servidor en casa de una forma totalmente automtica . El comprimir lo que necesitemos del servidor remoto y enviarlo remotamente no es un problema gracias a la transferencia segura por SCP. Esto podemos hacerlo pero por defecto solo podemos hacerlo a mano ya que cuando vas a transferir el fichero comprimido con todo tu contenido de un servidor a otro te pregunta tu nombre de usuario y password. Para comenzar vamos a quitar esta pega creando una llave en el servidor remoto y copiandola en el servidor en casa. De esta forma las dos maquinas podrn entenderse entre ellas sin necesidad de que el ser humano intervenga introduciendo el nombre de usuario y password. Esta tcnica puede ser muy cmoda para automatizar tareas entre varios ordenadores pero hay que contar con el factor ( Seguridad ). Si nuestros ordenadores pueden comunicarse sin mas es gracias a que los dos usan la misma llave. Esta llave puede ser peligrosa si cae en manos de terceros ya que tan solo con instalrnosla podemos tener acceso incondicional al servidor. Remotamente no es que sea del todo fcil capturarla pero si alguien tiene acceso a nuestra maquina de manera local podr copiarla sin mas. Esto es mejor saberlo antes de poner en practica esta tcnica de conexin segura sin clave para SSH.
ssh usuario@servidorremoto Una vez dentro vamos a crear la llave que luego enviaremos a nuestro servidor casero as
ssh-keygen -t rsa Una vez tengamos la llave veremos un nuevo fichero llamado id_rsa.pub. Ahora necesitamos copiar esta llave en el servidor casero donde alojaremos las copias de seguridad. Ahora accederemos a el va sftp y subiremos la llave tecleando lo siguiente
http://www.forat.info/2010/05/10/backup-automatico-seguro-entre-servidores-debian/
06/09/2011
Pgina 3 de 7
put id_rsa.pub Ahora necesitamos saber si este ordenador tiene el directorio .ssh en la cuenta del usuario que acabamos de entrar. Miraremos a ver si esta con
ls -la As veremos todos los directorios, visibles y ocultos con sus permisos y dems. Si tenemos el directorio .ssh bien y si no lo tenis que crear con .
mv id_rsa.pub .ssh/authorized_keys Ahora ya tenemos esta nueva llave tanto en el servidor remoto donde aremos las copias de seguridad como en el servidor casero donde las alojaremos. Ya podemos salir del sftp con el comando exit y si hacemos la prueba ya podremos conectarnos entre si sin password. Esto es valido para dos ordenadores que se conocen y conseguimos con ello poder automatizar tareas con ssh, sftp, scp y dems sin que nos pida un password de conexin de una manera segura. Hacemos la prueba y nos quedamos conectados al servidor remoto as
ssh usuario@servidorremoto Ahora que ya hemos eliminado esta barrera de nuestro paso vamos aremos las copias de seguridad de lo que necesitemos. En mi caso y como en el caso de casi todos los que habis montando cualquiera de mis proyectos de Servidores Web tengo varios Blogs con WordPress. Dicho CMS se basa en varias partes. El mismo software de wordpress, plugins, themes y lo que incluyamos nosotros mismos como por ejemplo imgenes en el directorio /upload. Por otro lado nos encontramos con sus respectivas bases de datos MySQL las cuales contienen prcticamente todos los textos que podemos ver en cada Blog. Con lo cual necesitamos copiar un directorio en cuestin y hacer una copia de seguridad de la base de datos de cada Blog que tengamos. Dudo bastante que este servidor remoto solo lo usis para alojar un Blog al menos ese no es mi caso. En el servidor remoto tengo alojados 10 Blogs, as que ar una copia masiva tanto del directorio donde tengo todos los Blogs como de todas las bases de datos a la vez. Hacerlo todo a la vez puede facilitar la tarea a la hora de restaurarlo todo y volver a ponerlo todo en su sitio, en vuestras manos os dejo este detalle.
http://www.forat.info/2010/05/10/backup-automatico-seguro-entre-servidores-debian/
06/09/2011
Pgina 4 de 7
Para comenzar voy a comprimir el directorio donde se encuentran todos mis Blogs, as que nos situamos en nuestro servidor remoto y localizamos el directorio que queramos hacer la copia de seguridad, en mi caso es /home/usuario/www/ del cuelgan todos los directorios donde tengo los Blogs
tar -czf /home/usuario/backupwww.tar.gz /home/usuario/www Una vez comprimido aremos una copia de seguridad masiva de todas las bases de datos que tenemos con
mysqldump -uroot -pPASSWORD --all-databases > /home/usuario/backupmysql.`date +%Y%m%d`.sql (Esta ultima linea es toda seguida no partida en dos ) Donde pone password introducid el password que tenga root en la base de datos MySQL no en el sistema. Una vez hechas las dos copias de seguridad ya tenemos todo lo que necesitamos para restaurarlo todo en caso de catstrofe. backupwww.tar.gz y backupmysql.sql los tenemos en el directorio /home/usuario y en caso de necesitarlos los tenemos hay pero si recordamos al principio del articulo eliminamos las pegas de la peticin del password al acceder a nuestro servidor en casa. Si nuestro servidor casero no necesita que le introduzcamos el password a mano podremos enviar estos dos ficheros por una conexin segura va sftp. El tema est en automatizar el proceso para que no tenga que hacerlo yo a mano y ya que tengo estas dos maquinas conectadas las 24 h porque no vamos a dejarlas que cumplan ellas dos solas esta tarea por nosotros. Una vez hechas las copias de seguridad de todo lo que necesitamos tanto de los directorios como de las bases de datos MySQL necesitamos enviarlos a nuestro servidor casero con sftp. Para hacer esto vamos a usar el programador de tareas por defecto en todos los sistemas operativos GNU/Linux. Con Cron podremos decirle a que hora hacer las copias de seguridad y a que hora enviarlas a nuestro servidor casero que le esta esperando con su propia llave de acceso. En mi caso se a ciencia cierta que el trafico menos intenso suele estar sobre las 8 de la maana los viernes y los sabados con lo que voy a programar todas las tareas de Backup y envo remoto a partir de esa hora y en esos das. Si repasamos el articulo donde os contaba como funciona el programador de tareas Crontab veremos su funcionamiento y podris adaptarlo a vuestras necesidades.
http://www.forat.info/2010/05/10/backup-automatico-seguro-entre-servidores-debian/
06/09/2011
Pgina 5 de 7
vi /home/usuario/backup.sh Una vez dentro del editor aadimos las lineas que usamos anteriormente para comprimir nuestros datos web y las bases de datos MySQL as
#!/bin/sh tar -czf /home/usuario/backupwww.tar.gz /home/usuario/www mysqldump -uroot -pPASSWORD --all-databases > /home/usuario/backupmysql.`date +%Y%m%d`.sql No est de mas recordar que la linea donde hacemos la copia de seguridad de todas nuestras bases de datos es una sola y no dos separadas por un espacio, evitemos confusiones Salimos y guardamos el archivo backup.sh pulsando la tecla ( ESC ) seguidamente ( :wq! ) y por ultimo ( Enter ). Le damos permisos
05 8 * * 5 /home/usuario/backup.sh Con esto le decimos que cada viernes a las 8:05 de la maana comprima todo el directorio www al fichero backupwww.tar.gz y que seguidamente se forme una copia de seguridad de todas las bases de datos MySQL que tengamos. Ahora el solo har las copias de seguridad de todos nuestros datos una vez a la semana. Seguidamente vamos a agregarle la siguiente linea donde enviaremos dichos archivos a nuestro servidor casero el cual equipamos anteriormente con la llave de la siguiente forma
http://www.forat.info/2010/05/10/backup-automatico-seguro-entre-servidores-debian/
06/09/2011
Pgina 6 de 7
Ahora los dos archivos anteriores de copia de seguridad que comienzan por el nombre ( backup ) se copiarn a las 9:00 de la maana de cada viernes. Salimos del crontab pulsando la tecla ( ESC ) seguidamente ( :wq! ) y por ultimo ( Enter ). Reiniciamos el demonio de Crontab con
/etc/init.d/cron restart Recordemos que en el servidor de casa donde vamos a alojar las copias de seguridad tiene que tener una carpeta con permisos para que se pueda escribir, por lo tanto nos situamos en nuestro servidor casero y tecleamos
chmod 777 /home/usuario/backup Ahora todos los viernes entre las 8 y las 9 de la maana tendremos una copia de seguridad fresca de todos nuestros contenidos generados en la ultima semana. Todo esto est muy bien pero si algn da nuestro servidor fallece tendremos que saber como volver a tener todos nuestros Blogs de nuevo funcionando.
scp /home/usuario/backup/backup* usuario@servidorremoto:/home/usuario Ahora tenemos las copias de seguridad de nuevo en nuestro servidor remoto. Accedemos a el via SSH con
ssh usuario@servidorremoto Ahora vamos a restaurar el fichero backupwww.tar.gz y podremos ver de nuevo el directorio www con
tar -xvzf backupwww.tar.gz Ahora vamos a restaurar el fichero backupmysql.sql que contiene todas las bases de datos de todos los blogs con
mysql -u root -p < /home/usuario/backup/mysql.sql Y listo !! Ahora tenemos todos nuestros Blogs tal y como los tenamos en la ultima copia de seguridad que hicimos.
http://www.forat.info/2010/05/10/backup-automatico-seguro-entre-servidores-debian/
06/09/2011
Pgina 7 de 7
Ahora podemos despreocuparnos del tema de las copias de seguridad ya que nuestros dos servidores se ocuparn de hacer el trabajo por nosotros y si necesitamos restaurar las copias y no nos acordamos siempre tendremos este manual OnLine 24 h Non Stop
http://www.forat.info/2010/05/10/backup-automatico-seguro-entre-servidores-debian/
06/09/2011