Copia de seguridad de WordPress en Yandex Cloud: mysqldump, rclone y notificaciones en Telegram
Publicado el 15.10.2025
Tener un sitio en WordPress es estupendo, pero la fiabilidad y la seguridad de los datos son la prioridad. Las copias de seguridad periódicas protegen el proyecto frente a errores, ataques y fallos. En esta guía veremos cómo crear una copia de seguridad automática de WordPress usando:
mysqldump— para la base de datos,rclone— para subir a Yandex Cloud,curl— para notificaciones en Telegram.
🛠️ Paso 1. Creación de la copia de seguridad local
1.1 Comprobación de la configuración de WordPress
El archivo wp-config.php se encuentra en la raíz del sitio (/var/www/tu_sitio/wp-config.php):
define('DB_NAME', 'tu_db_name');
define('DB_USER', 'tu_db_user');
define('DB_PASSWORD', 'tu_db_password');
Anota los parámetros de conexión a la base de datos.
1.2 Copia de seguridad de los archivos del sitio
mkdir -p /home/backup/
cd /var/www/tu_sitio/
tar -czf /home/backup/wp_files_$(date +%Y%m%d).tar.gz .
Obtendrás un archivo con los temas, plugins y archivos multimedia.
1.3 Copia de seguridad de la base de datos
mysqldump -u tu_db_user -ptu_db_password tu_db_name | gzip > /home/backup/wp_db_$(date +%Y%m%d).sql.gz
Para no guardar la contraseña en la orden, crea el archivo ~/.my.cnf:
[mysqldump]
user=tu_db_user
password=tu_db_password
Permisos:
chmod 600 ~/.my.cnf
Ahora:
mysqldump tu_db_name | gzip > /home/backup/wp_db_$(date +%Y%m%d).sql.gz
En /home/backup/ habrá dos archivos:
wp_files_YYYYMMDD.tar.gz y wp_db_YYYYMMDD.sql.gz.
☁️ Paso 2. Configuración de Yandex Cloud y rclone
2.1 Instalación de rclone
sudo apt update && sudo apt install rclone -y
Para otros sistemas, consulta rclone.org.
2.2 Obtención de claves de acceso
Accede a la Yandex Cloud Console.
Crea una cuenta de servicio en IAM.
Crea una clave de acceso estática y anota:
Access Key IDSecret Access Key
No publiques las claves.
2.3 Configuración de rclone
rclone config
n— crear un nuevo remote.Nombre:
yandex_storage.Tipo:
S3.Proveedor:
Amazon S3 Compliant Storage.Introduce:
access_key_id: tu clavesecret_access_key: tu secretoendpoint:https://storage.yandexcloud.net
🚀 Paso 3. Subida de la copia de seguridad a Yandex Cloud
Crea un bucket, por ejemplo wp-backups-example.
rclone copy /home/backup/ yandex_storage:wp-backups-example/ --log-file /home/backup/rclone.log
Para eliminar automáticamente archivos antiguos, habilita la Lifecycle Policy en la configuración del bucket (por ejemplo, eliminar archivos de más de 30 días).
📬 Paso 4. Notificaciones en Telegram
4.1 Creación del bot
En Telegram abre
@BotFather.Envía
/newbot.Obtén el token:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
4.2 Obtención del Chat ID
Envía un mensaje al bot, luego ejecuta:
curl -s "https://api.telegram.org/botTU_TOKEN/getUpdates"
Busca "chat":{"id":...} — ese es tu CHAT_ID.
4.3 Mensaje de prueba
curl -s -X POST "https://api.telegram.org/botTU_TOKEN/sendMessage" \
-d chat_id=TU_CHAT_ID \
-d text="Mensaje de prueba"
⏱️ Paso 5. Automatización con Cron
Crea el archivo /home/backup/daily_backup.sh:
#!/bin/bash
SITE_DIR="/var/www/tu_sitio/"
BACKUP_DIR="/home/backup/"
DB_NAME="tu_db_name"
DB_USER="tu_db_user"
DB_PASS="tu_db_password"
RCLONE_REMOTE="yandex_storage"
BUCKET_NAME="wp-backups-example"
LOG_FILE="/home/backup/backup.log"
TELEGRAM_BOT_TOKEN="TU_TOKEN"
TELEGRAM_CHAT_ID="TU_CHAT_ID"
send_telegram() {
local message="$1"
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d text="${message}" >> "${LOG_FILE}" 2>&1
}
if [[ ! -d "$SITE_DIR" ]] || [[ ! -d "$BACKUP_DIR" ]]; then
echo "Error: directorio inexistente" >> "$LOG_FILE"
send_telegram "Error de copia de seguridad: falta el directorio"
exit 1
fi
cd "$SITE_DIR" || { send_telegram "Error al cambiar al directorio"; exit 1; }
tar -czf "${BACKUP_DIR}wp_files_$(date +%Y%m%d).tar.gz" . || { send_telegram "Error de archivado"; exit 1; }
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "${BACKUP_DIR}wp_db_$(date +%Y%m%d).sql.gz" || { send_telegram "Error al exportar la base de datos"; exit 1; }
rclone copy "$BACKUP_DIR" "${RCLONE_REMOTE}:${BUCKET_NAME}/" --log-file "$LOG_FILE" || { send_telegram "Error al subir al almacenamiento en la nube"; exit 1; }
find "$BACKUP_DIR" -type f -mtime +7 -delete
send_telegram "✅ Copia de seguridad completada con éxito: $(date)"
Hazlo ejecutable:
chmod +x /home/backup/daily_backup.sh
Añade la tarea en Cron:
crontab -e
0 3 * * * /home/backup/daily_backup.sh >> /home/backup/backup.log 2>&1
✅ Recomendaciones
- Prueba la restauración. Comprueba que las copias de seguridad funcionan realmente.
- Usa Lifecycle Policy. Elimina las copias antiguas.
- Secretos de Telegram. Guarda el token y el chat_id en un archivo seguro.
- Para sitios grandes: considera copias incrementales o plugins como UpdraftPlus y Duplicator.
Felicidades — ahora tu WordPress está protegido con copias de seguridad automáticas en Yandex Cloud con notificaciones en Telegram.