Cuando deseamos crear un Backup en WordPress solemos tomar el camino fácil, buscando un plugin famoso que automatice la tarea: error. Debes tener cuidado ya que algunos de ellos crean una extensión propia, que no podremos utilizar sin el plugin, o trae limitaciones artificiales para obligarnos a pagar la licencia (ocurre mucho con los multisitios o cuando conectas con servicios en nube). Por suerte disponemos de Bash y todo el poder del terminal. Sin instalar absolutamente nada podremos realizar todas las copias de seguridad que deseemos: Más rápido, gratuito y sin limitaciones de ningún tipo.
Base de datos
Crea un archivo, con el nombre que quieras (por ejemplo backup.sh
) en la raíz de tu página. En el mismo lugar donde te encontrarás el archivo wp-config.php
, wp-admin
, etc. Añade el siguiente contenido.
#!/bin/bash
DB_HOST=$(cat wp-config.php | grep DB_HOST | cut -d \' -f 4)
DB_USER=$(cat wp-config.php | grep DB_USER | cut -d \' -f 4)
DB_PASS=$(cat wp-config.php | grep DB_PASSWORD | cut -d \' -f 4)
DB_NAME=$(cat wp-config.php | grep DB_NAME | cut -d \' -f 4)
BACKUP_DATABASE_NAME="database.sql"
mysqldump -h $DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DATABASE_NAME
Básicamente se encarga de obtener todas las variables importantes para lanzar mysqldump
. El software que crea copias de seguridad de MySQL/MariaDB
.
Ahora ya puedes ejecutalo.
bash backup.sh
Te creará el archivo database.sql
con toda la base de datos.
Archivos
Esta tarea es la más sencilla, con tan solo crear un zip
de la carpeta wp-content
estará todo: plugins, tema, imágenes, traducciones…
Añade al final las siguientes líneas.
NOW=$(date +"%Y-%m-%d-%H%M")
zip -r $NOW.zip wp-content
Creará un archivo zip
con la fecha de hoy (2020-08-02-1234.zip
).
Todo unido
#!/bin/bash
# Variables
DB_HOST=$(cat wp-config.php | grep DB_HOST | cut -d \' -f 4)
DB_USER=$(cat wp-config.php | grep DB_USER | cut -d \' -f 4)
DB_PASS=$(cat wp-config.php | grep DB_PASSWORD | cut -d \' -f 4)
DB_NAME=$(cat wp-config.php | grep DB_NAME | cut -d \' -f 4)
NOW=$(date +"%Y-%m-%d-%H%M")
BACKUP_DATABASE_NAME="database.sql"
# Base de datos
mysqldump -h $DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DATABASE_NAME
# Archivos
zip -r $NOW.zip wp-content
Ampliando posibilidades
Si quieres más posibilidades como:
- Restablecer la copia de seguridad.
- Migrar entre hostings.
- Qué sea compatible con Linux, MacOS y sistemas BSD.
Y otras funcionalidades, puedes utilizar el script wp-backup que comparto en Github. Lo uso de manera habitual para mis clientes o para despliegues automáticos.
{{ comments.length }} comentarios