WordPress es un popular CMS que usan muchísimos sitios en internet, ya sea para sitios de noticias, blogs, tiendas, etcétera.
Este CMS se compone de archivos para funcionar, además de los archivos que el usuario sube, plugins, temas y finalmente una base de datos en donde están los artículos, páginas y configuraciones del sitio.
En este post voy a mostrarte cómo respaldar toda la instalación de WordPress junto con su base de datos en un archivo que será subido a Google Drive.
Como extra, te mostraré cómo hacer que estos respaldos sean automáticos usando cron.
Requisitos y recomendaciones
Para este post necesitamos las credenciales de acceso de MySQL de WordPress; pues vamos a exportar la base de datos.
También se necesita haber accedido a la cuenta de Google Drive desde Linux, por favor, sigue este sencillo tutorial.
Este post está basado en otros posts:
- Respaldar carpeta de Linux
- Hacer backup base de datos de MySQL en Linux
- Crear respaldo periódico de carpeta de Linux en Google Drive
Recomiendo leerlos, pues lo explicado ahí (en detalle) no será explicado aquí, aunque si no los lees no pasa nada.
Proceso de respaldo de WordPress
Vamos a crear un archivo .tar.gz con toda la instalación de WordPress. A ese archivo le vamos a agregar un export de la base de datos de MySQL.
Después vamos a subir ese respaldo a nuestra cuenta de Google Drive y una vez subido haremos que se elimine de nuestro sistema.
Finalmente vamos a hacer que el script se ejecute cada cierto tiempo con cron.
Hablar es de mal gusto, muéstrame el código
Veamos el script y abajo explico su funcionamiento. Es muy fácil de usar y modificar:
Comenzando con MySQL, debemos tener un archivo llamado my.cnf en la ruta que se indica. El mío luce así:
Antes de ejecutar el script recomiendo que pruebes iniciar sesión con las credenciales de MySQL que pusiste; o bueno, si tu instalación de WordPress funciona con esas credenciales puedes omitir este paso.
Recuerda poner correcta la ruta del ejecutable de la herramienta de Google Drive y haber puesto tus credenciales anteriormente.
También cambia el nombre de la base de datos de WordPress (pues el usuario, la contraseña y el host estarán en my.cnf)
Finalmente cambia la ruta absoluta de la instalación de WordPress, es decir, la dirección en donde está la carpeta de wp-content, el archivo wp-config.php, etcétera.
Cuando hayas configurado todo, dale permisos de ejecución al script:
chmod +x script.sh
Y después ejecútalo:
./script.sh
Es importante notar que dependiendo de tu servidor y cantidad de archivos, así como la conexión a internet, el proceso tardará un poco más o un poco menos.
Ejecutando el script
Aquí puedes ver una ejecución del script en mi computadora:

Como te lo dije, puedes modificar el archivo a tu gusto.
Agregar archivo a cron
Para que los respaldos sean automáticos hay que editar el crontab con nuestro editor favorito:
crontab -e
Después, agregar algo como lo siguiente:
0 7 * * 1,3,5 bash -c /home/parzibyte/scripts/respaldar_blog.sh
En este caso los respaldos se harán los lunes, miércoles y viernes a las 7 de la mañana; puedes modificar los períodos a tu gusto.
Cuando me pierdo, utilizo esta web para saber los tiempos de cron.
Bonus: enviar correo electrónico cuando se haga un respaldo
Si tenemos sendmail configurado en nuestro entorno, podemos enviar un correo electrónico con los mensajes.
Para ello hay que direccionar la salida y pasarla a través de una tubería hacia sendmail:
0 7 * * 1,3,5 bash -c /home/parzibyte/scripts/respaldar_blog.sh | grep /usr/sbin/sendmail tu_correo@dominio.com
En mi caso mi cron queda así:

Y al probarlo:

Así, cada vez que se haga un respaldo, un correo será enviado.