Automatiza los backup de tu servidor
En este apartado veremos como realizar una copia de seguridad de todo nuestro directorio de WordPress junto con su correspondiente base de datos cada 15 dias a las 3:00 am.
- Servidor de producción
- srv-01
- Datos a respaldar:
- /wp-content
- Mi-WordPress.sql
- Servidor de backup
- srv-02
Crear un nuevo usuario
En el servidor (srv-1) creamos un usuario llamado ghost para después poder copiar el backup a nuestro segundo servidor (srv-2) mediante Rsync.
adduser ghostNo es recomendable utilizar el usuario root, en los servidores se suele desactivar la directiva PermitRootLogin para evitar el acceso ssh de root y por tanto Rsync daría permiso denegado.
Generar llaves ssh
Para utilizar Rsync de forma automatizada sin intervención del usuario, necesitamos crear un par de llaves ssh (publica / privada) en el servidor (srv-1).
# Con el usuario ghost tecleamos el siguiente comando
ssh-keygen
Después debemos copiar la clave publica (id_rsa.pub) en nuestro segundo servidor (srv-2).
ssh-copy-id -i id_rsa.pub ghost@<ip_publica_srv2>Generar nuestro script de backup
Creamos un sencillo script en bash para automatizar la compresión completa de nuestro directorio WordPress junto con el respaldo de la base de datos utilizando mysqldump.
nano script-backup.sh#!/bin/bash
# Creamos una carpeta dentro del directorio del usuario ghost
mkdir /home/ghost/Backup-WordPress
# Realizamos el respaldo de la base de datos mediante el comando mysqldump
mysqldump -u root -pcontraseña nombre_bbdd > /home/ghost/Backup-WordPress/wp-db.sql
# Nos movemos al directorio de nuestro servidor web donde esta nuestra web
cd /var/www/
# Comprimimos todo el directorio html dentro de la carpeta Backup-WordPress
tar -czvf /home/ghost/Backup-WordPress/wp-web.tar.gz html/
# Comprimimos el directorio Backup-WordPress que contiene (wp-db.sql + wp-web.tar.gz)
tar -czvf /home/ghost/Copia-Seguridad.$(date +%F).tar.gz /home/ghost/Backup-WordPress/
# Eliminamos el directorio sin comprimir
rm -R /home/ghost/Backup-WordPress/
# Cambiamos el propietario del archivo comprimido para realizar la sincronización
chown ghost:ghost /home/ghost/Copia-Seguridad.$(date +%F).tar.gz
# Enviamos nuestra copia de seguridad al segundo servidor (srv-2) a través del usuario ghost (he cambiado el puerto ssh por defecto al 3333)
su ghost -c 'rsync -avh -e "ssh -p 3333" /home/ghost/Copia-Seguridad.$(date +%F).tar.gz ghost@ip_servidor_remoto:/home/ghost/Copia-Seguridad-srv1.$(date +%F).tar.gz'
Programar la copia con el cron de linux
Vamos a automatizar nuestro script a través del cron de nuestro servidor.
En este ejemplo se va a ejecutar todos los 15 de mes a las 3:00 am.
#Para editar el archivo crontab de linux
crontab -e
m h dom mon dow command
00 03 15 * * /bin/bak-wp.sh