¿Cuánto vale para ti, tu sitio web?, te has preguntado que perderías si de pronto tu sitio web deja de funcionar, las causas puede ser muchas: Hiciste una actualización y ahora todo da error, borraste algún archivo importante, fuiste hackeado, etc.
Cualquiera de estas cosas pueden arruinar tu sitio web, pero ninguna importa si cuentas con un backup o copia de seguridad reciente, con la que puedas devolver la vida a tu sitio web.
Puedes delegar esta tarea tan importante a otra persona o a una empresa, pero puedes confiar 100% en esa persona, o que pasa si esa empresa cierra sin aviso. La buena noticia es que puedes automatizar todo este proceso de backup, así no perderás tu valioso tiempo y tampoco correrás riesgos.
Para esto vas a necesitar algunas cosas:
- Tu sitio web debe estar alojado en un servidor Linux al cual tengas acceso para ejecutar comandos (indispensable).
- Debes tener conocimientos básicos de comandos de Linux, si no los tienes, puedes leer esta introducción a los comandos de Linux.
Estructura de archivos
Primero vamos a crear una estructura para poder tener organizadas todas las copias de seguridad, vamos a crear una carpeta llamada backups y dentro de ella dos carpetas más una (scripts) para guardar el código que usaremos para hacer las copias de seguridad y otra (files) para guardar las copias de seguridad. Deberás tener una estructura de archivos como la imagen que se muestra a continuación.
Programa para realizar los backups automáticos.
Nota: Ahora vamos a crear un archivo, si nunca lo has hecho, puedes leer esta introducción breve al editor de texto de Linux.
Ahora vamos a crear un script para hacer las copias de seguridad, primero crea un archivo nuevo en la ruta /var/backups/scripts/tusitio.sh
, puedes cambiar el nombre tusitio por el que tú quieras. Luego en el archivo copias este código:
#!/bin/sh
sitioweb="codigonaranja.com"
bd="my_database_name"
usuario_bd="my_database_user"
clave_bd="my_database_password"
ruta_web="/var/www/yyy"
fecha=`date +%d%m%y%H%M`
mkdir -p /var/backups/files/$sitioweb
mysqldump -u $usuario_bd -p${clave_bd} $bd | gzip > /var/backups/files/$sitioweb/dbbackup_${bd}_${fecha}.bak.gz
tar -zcf /var/backups/files/$sitioweb/sitebackup_${sitioweb}_${fecha}.tar $ruta_web
Para que funcione tendrás que modificar los valores entre comillas de algunas estas variables:
- sitioweb: Coloca el nombre de tu sitio web, puede ser el dominio si lo deseas.
- db: Coloca el nombre de la base de datos que usa tu sitio web.
- usuario_bd: Un usuario para poder conectarse a tu base de datos
- clave_bd: La clave del usuario para conectarse a la base de datos.
- ruta_web: La ruta completa hacia tu sitio web, no es la dirección web, sino la del sistema operativo
Ahora que guardes el archivo, tienes que hacerlo ejecutable, esto lo logras con este comando (recuerda cambiarlo según el nombre de archivo que elegiste):
chmod +x /var/backups/scripts/tusitio.sh
Ahora puedes probar si el script funciona con solo ejecutar este comando: (recuerda cambiar el nombre del archivo)
/var/backups/scripts/tusitio.sh
Para saber si funcionó, puedes revisar la carpeta /var/backups/files/ ahí debe haber una carpeta con los archivos de backup, uno de la base de datos y otro de los archivos de tu sitio web.
Programar un Cron, para que tu sitio se actualice automáticamente.
Ya está todo casi listo, solo debemos definir la frecuencia de las copias de seguridad, lo más común es hacerlo cada día, por lo general en la noche. Si no actualizas tu sitio muy seguido, entonces podrías hacer tus copias de seguridad cada semana o cada mes.
En Linux el Cron es una tarea programada, que ejecuta un comando cada cierto tiempo, para crear o editar un cron vamos a usar el comando crontab -e
, si es la primera vez que lo ejecutas, es posible que te pida elegir qué editor deseas usar, entonces debes elegir una opción presionando el número del editor que prefieras.
Ahora verás que se abre un archivo de texto, aquí se agrega cada tarea en una línea, entonces vamos hasta la última línea y agregamos esto:
0 0 * * * /var/backups/scripts/tusitio.sh
Con las primeras 5 letras le decimos que se ejecute todos los días a las 12 de la noche, y lo siguiente es el script que creamos. Así tu sitio web se respalda automáticamente todos los días las 12 de la noche.
Como restaurar una copia de seguridad.
Ahora ya tienes copias de seguridad de tu sitio web, si algún día tienes una emergencia y necesitas restaurar tu sitio web, solo tienes que ejecutar estos comandos:
Con este comando vas a restaurar tu base de datos, pero antes tienes que cambiar algunas partes como: archivo_mysql
por el nombre del archivo de tu copia, estos inicia con dbbackup_, también cambia usuario
por el usuario de tu base de datos y clave
por la clave de la base de datos y finalmente nombre_basedatos
por el nombre de la base de datos
tar -xzOf archivo_mysql | mysql -u usuario -p clave nombre_basedatos
Ahora par restaurar los archivos de tu sitio web, ejecuta este comando y cambia archivo_sitio_web
por la copia de tu sitio web, estos archivos inician con sitebackup_ y luego cambia ruta_sitio_web
por la ruta del sitio web que vas a restaurar.
tar -xvf archivo_sitio_web -C ruta_sitio_web
Notas finales
Ahora solo debes de tener unas consideraciones:
- Si haces las copias de seguridad cada día, algún día te quedarás sin espacio, entonces tendrás que borrar algunas de las copias de seguridad que tengas.
- Si tienes más de un sitio web, puedes crear varios archivos de script, uno para cada sitio web.