Bandera: Русский Русский Bandera: English English

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

  1. Accede a la Yandex Cloud Console.

  2. Crea una cuenta de servicio en IAM.

  3. Crea una clave de acceso estática y anota:

    • Access Key ID
    • Secret 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 clave
    • secret_access_key: tu secreto
    • endpoint: 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

  1. En Telegram abre @BotFather.

  2. Envía /newbot.

  3. 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.

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Publicaciones relacionadas