Бэкап 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 Получение ключей доступа
Войдите в Yandex Cloud Console.
Создайте сервисный аккаунт в IAM.
Создайте статический ключ доступа и запишите:
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 Создание бота
В Telegram откройте
@BotFather
.Отправьте
/newbot
.Получите токен:
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.
Похожие посты
114 | Облако или свой сервер? Как выбрать лучшее для хранения данных бизнеса
02.10.2025
105 | Автоматизация с n8n и его альтернативы: выбор инструмента
20.09.2025
064 | n8n + Xano: Мощный No-code Backend для масштабируемых приложений
26.07.2025
063 | n8n + Appwrite: Открытая альтернатива Firebase для самохостинга
25.07.2025