WordPress script en Bash para hacer copia de seguridad | Programador Web Valencia

WordPress script en Bash para hacer copia de seguridad

2 minutos

WordPress

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.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...