EN EN

Бэкап WordPress в Yandex Cloud: mysqldump, rclone и уведомления в Telegram

Опубликовано 15.10.2025

🎉 Бэкап WordPress в Yandex Cloud: mysqldump, rclone и уведомления в Telegram

Владение сайтом на WordPress — это замечательно, но надёжность и безопасность данных — приоритет. Регулярные резервные копии защищают проект от ошибок, атак и сбоев. В этом руководстве рассмотрим, как создать автоматический бэкап WordPress с помощью:

  • mysqldump — для базы данных,
  • rclone — для загрузки в Yandex Cloud,
  • curl — для уведомлений в Telegram.

🛠️ Шаг 1. Создание локального бэкапа

1.1 Проверка конфигурации WordPress

Файл wp-config.php находится в корне сайта (/var/www/ваш_сайт/wp-config.php):

define('DB_NAME', 'ваш_db_name');
define('DB_USER', 'ваш_db_user');
define('DB_PASSWORD', 'ваш_db_password');

Запишите параметры подключения к базе данных.

1.2 Резервное копирование файлов сайта

mkdir -p /home/backup/
cd /var/www/ваш_сайт/
tar -czf /home/backup/wp_files_$(date +%Y%m%d).tar.gz .

Получится архив с темами, плагинами и медиафайлами.

1.3 Резервное копирование базы данных

mysqldump -u ваш_db_user -pваш_db_password ваш_db_name | gzip > /home/backup/wp_db_$(date +%Y%m%d).sql.gz

Чтобы не хранить пароль в команде, создайте файл ~/.my.cnf:

[mysqldump]
user=ваш_db_user
password=ваш_db_password

Права:

chmod 600 ~/.my.cnf

Теперь:

mysqldump ваш_db_name | gzip > /home/backup/wp_db_$(date +%Y%m%d).sql.gz

В /home/backup/ будут два файла: wp_files_YYYYMMDD.tar.gz и wp_db_YYYYMMDD.sql.gz.


☁️ Шаг 2. Настройка Yandex Cloud и rclone

2.1 Установка rclone

sudo apt update && sudo apt install rclone -y

Для других систем см. rclone.org.

2.2 Получение ключей доступа

  1. Войдите в Yandex Cloud Console.

  2. Создайте сервисный аккаунт в IAM.

  3. Создайте статический ключ доступа и запишите:

    • Access Key ID
    • Secret Access Key

Не публикуйте ключи.

2.3 Настройка rclone

rclone config
  • n — создать новый remote.

  • Имя: yandex_storage.

  • Тип: S3.

  • Провайдер: Amazon S3 Compliant Storage.

  • Введите:

    • access_key_id: ваш ключ
    • secret_access_key: ваш секрет
    • endpoint: https://storage.yandexcloud.net

🚀 Шаг 3. Загрузка бэкапа в Yandex Cloud

Создайте бакет, например wp-backups-example.

rclone copy /home/backup/ yandex_storage:wp-backups-example/ --log-file /home/backup/rclone.log

Для автоматического удаления старых архивов включите Lifecycle Policy в настройках бакета (например, очистка файлов старше 30 дней).


📬 Шаг 4. Уведомления в Telegram

4.1 Создание бота

  1. В Telegram откройте @BotFather.

  2. Отправьте /newbot.

  3. Получите токен:

    123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
    

4.2 Получение Chat ID

Отправьте сообщение боту, затем выполните:

curl -s "https://api.telegram.org/botВАШ_ТОКЕН/getUpdates"

Найдите "chat":{"id":...} — это ваш CHAT_ID.

4.3 Тестовое сообщение

curl -s -X POST "https://api.telegram.org/botВАШ_ТОКЕН/sendMessage" \
     -d chat_id=ВАШ_CHAT_ID \
     -d text="Тестовое сообщение"

⏱️ Шаг 5. Автоматизация с помощью Cron

Создайте файл /home/backup/daily_backup.sh:

#!/bin/bash
SITE_DIR="/var/www/ваш_сайт/"
BACKUP_DIR="/home/backup/"
DB_NAME="ваш_db_name"
DB_USER="ваш_db_user"
DB_PASS="ваш_db_password"
RCLONE_REMOTE="yandex_storage"
BUCKET_NAME="wp-backups-example"
LOG_FILE="/home/backup/backup.log"
TELEGRAM_BOT_TOKEN="ВАШ_ТОКЕН"
TELEGRAM_CHAT_ID="ВАШ_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 "Ошибка: директория отсутствует" >> "$LOG_FILE"
    send_telegram "Ошибка бэкапа: нет директории"
    exit 1
fi

cd "$SITE_DIR" || { send_telegram "Ошибка перехода в директорию"; exit 1; }
tar -czf "${BACKUP_DIR}wp_files_$(date +%Y%m%d).tar.gz" . || { send_telegram "Ошибка архивации"; exit 1; }
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "${BACKUP_DIR}wp_db_$(date +%Y%m%d).sql.gz" || { send_telegram "Ошибка дампа БД"; exit 1; }
rclone copy "$BACKUP_DIR" "${RCLONE_REMOTE}:${BUCKET_NAME}/" --log-file "$LOG_FILE" || { send_telegram "Ошибка загрузки в облако"; exit 1; }
find "$BACKUP_DIR" -type f -mtime +7 -delete
send_telegram "✅ Бэкап успешно завершён: $(date)"

Сделайте исполняемым:

chmod +x /home/backup/daily_backup.sh

Добавьте задачу в Cron:

crontab -e
0 3 * * * /home/backup/daily_backup.sh >> /home/backup/backup.log 2>&1

✅ Рекомендации

  • Тестируйте восстановление. Проверьте, что бэкапы действительно работают.
  • Используйте Lifecycle Policy. Удаляйте старые бэкапы.
  • Секреты Telegram. Храните токен и chat_id в защищённом файле.
  • Для крупных сайтов: рассмотрите инкрементальные бэкапы или плагины вроде UpdraftPlus и Duplicator.

Поздравляем — теперь ваш WordPress защищён автоматическими бэкапами в Yandex Cloud с уведомлениями в Telegram.

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Похожие посты