Hacer copias de seguridad de sitios grandes con WordPress puede complicarse. Si este es tu caso, quizá te interese hacer alguna copia con restic.
- Objetivos y requisitos
- Instalando restic
- Configurando un almacenamiento
- Primera prueba
- Script de backup
- Listar los snapshots
- Recuperar un snapshot
- Sobre este documento
- Servicios de Administración de Sistemas WordPress
Este tutorial ha sido creado en un VPS de Clouding.io. Puedes crear tu propio VPS desde 3€/mes.
Además, tienes la posibilidad de crear tu VPS con la imagen de WordPress en un clic.
COLABORACIÓN
Objetivos y requisitos
El objetivo de usar este sistema es el de crear copias de seguridad con un acceso rápido, pero desde consola (CLI). Hay que tener en cuenta que esta herramienta usa un sistema de snapshots, por lo que no se podrá acceder a cada fichero en el lugar del alojamiento de datos.
En casos de tener un sitio WordPress grande, a veces es problemático usar un plugin, o las copias de seguridad de un panel tipo Plesk o cPanel, por lo que tendremos que hacer las copias de forma más manual.
Además, este sistema también puede servidor como una copia secundaria a un sistema que ya esté establecido.
Este tutorial se va a probar en:
- Ubuntu 22
- WordPress
- Wasabi (almacenamiento externo)
Instalando restic
Lo primero que hemos de hacer es instalar la propia herramienta, restic.
apt-get -y install restic
Podemos, añadirle, además, el sistema de auto-completado.
restic generate --bash-completion /etc/bash_completion.d/restic
Configurando un almacenamiento
Existen distintos tipos de almacenamiento externo para restic. En este caso vamos a hacer la prueba con Wasabi, un sistema de almacenamiento compatible-S3.
Como en cualquier sistema de este tipo, necesitaremos 4 datos:
- Access Key (ejemplo:
3Q7WB7Y98VHMWN4XEVEB
) - Secret Key (ejemplo:
ySXTLpQnqanfHLHM9RA6VXb3SjRaFG22ryuhRvGc
) - Repositorio (ejemplo:
eu-west-2
) - Nombre del bucket (ejemplo:
vps-1-2-3-4
)
Además, cada instalación de restic tiene una contraseña con la que cifra los datos en el sitio remoto, y que deberás guardar si quieres restaurar en otra máquina.
Con esto, podemos crear un fichero en el que incluir todos estos datos:
cat > /root/.restic-env << EOF
export AWS_ACCESS_KEY_ID=3Q7WB7Y98VHMWN4XEVEB
export AWS_SECRET_ACCESS_KEY=ySXTLpQnqanfHLHM9RA6VXb3SjRaFG22ryuhRvGc
export RESTIC_REPOSITORY="s3:s3.eu-west-2.wasabisys.com/vps-1-2-3-4"
export RESTIC_PASSWORD="A326AVTjhgdkmA2TukB2J3UcmbuJ2cT98YMp"
EOF
Primera prueba
Ahora que tenemos la herramienta y la configuración, podemos hacer una primera prueba de funcionamiento.
Lo primero que haremos es cargar la configuración.
source /root/.restic-env
Después, comprobaremos que se ha cargado. Al ejecutarlo, deberá mostrar la ruta del almacenamiento. Si no aparece nada es que no se ha cargado la configuración correctamente.
echo $RESTIC_REPOSITORY
Ejecutaremos la herramienta. En este momento hace comprobaciones de conectarse con el almacenamiento remoto.
restic init
Y podemos listar los snapshots disponibles. La primera vez nos debería mostrar un listado vacío.
restic snapshots
Script de backup
Como el objetivo es automatizar las copias de seguridad, vamos a crear un script en Bash que haga todo el trabajo por nosotros.
El script podría ser similar al siguiente (hay que adaptar las rutas, nombres y demás).
if [ ! $RESTIC_REPOSITORY ]
then
source /root/.restic-env
echo $RESTIC_REPOSITORY
restic init
fi
restic backup /etc/
mkdir -p /backups-db/
mysqldump --quick --skip-lock-tables --single-transaction --quick --verbose example-com-db | zip > /backups-db/example-com-db-$(date +\%F-\%T).sql
restic backup /backups-db/
rm -rf /backups-db/
restic backup /webs/example.com/
Cargando la configuración
El primero de los bloques es la validación y carga de la configuración.
if [ ! $RESTIC_REPOSITORY ]
then
source /root/.restic-env
echo $RESTIC_REPOSITORY
restic init
fi
Aquí, básicamente lo que validamos es si la configuración está cargada. Si lo está, sigue adelante. Si no lo está, la carga y conecta con el sistema de almacenamiento remoto.
Copia de las configuraciones
La primera copia que haremos es la de las configuraciones generales de la máquina.
restic backup /etc/
Copia de la base de datos
El segundo elemento al que vamos a hacer la copia es a la base de datos. En este caso haremos primero un MySQLdump y ese fichero generado será el que usemos.
mkdir -p /backups-db/
mysqldump --quick --skip-lock-tables --single-transaction --quick --verbose example-com-db | zip > /backups-db/example-com-db-$(date +\%F-\%T).sql
restic backup /backups-db/
rm -rf /backups-db/
Copia de los ficheros
Por último copiaremos los ficheros del propio WordPress.
restic backup /webs/example.com/
Listar los snapshots
Ahora que tenemos ya varias copias hechas, podemos ver el listado de qué se podría recuperar.
restic snapshots
Algo que nos devolverá algo como:
repository cgms3tqn opened successfully, password is correct
ID Time Host Tags Paths
--------------------------------------------------------------------
af9qtv5m 2022-06-13 18:24:04 example.com /etc
26kkqczj 2022-06-13 18:24:18 example.com /backups-db
44z2cta5 2022-06-13 18:24:29 example.com /webs/example.com
4tdrn8zx 2022-06-13 18:53:42 example.com /etc
v3y8d9ee 2022-06-13 18:53:46 example.com /backups-db
4j9qs4m2 2022-06-13 18:53:50 example.com /webs/example.com
Recuperar un snapshot
Si queremos recuperar una de las copias, podemos hacerlo sobre los ficheros existentes, o podemos recuperarlo en una carpeta temporal para buscar los ficheros que necesitamos.
restic restore 26kkqczj --target /tmp/restore
Si accedemos a la carpeta /tmp/restore
, podremos encontrar la restauración del snapshot.
Sobre este documento
Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.
Servicios de Administración de Sistemas WordPress
¿Tienes un sitio web con WordPress de alto tráfico? ¿Eres una Agencia con servidores con cPanel, Plesk u otro panel en los que mantienes WordPress para tus clientes?
Si es así y te interesa un servicio profesional de mantenimiento de infraestructura WordPress y de mejora del rendimiento de tus sitios web o los de tus clientes, contacta conmigo.