Резервное копирование сайта — критически важный элемент поддержки любого проекта на WordPress. В случае сбоя, взлома или ошибки обновления именно резервная копия позволяет быстро восстановить работоспособность ресурса. Многие пользователи полагаются на плагины для создания бэкапов, но что делать, если нужна автоматизация без сторонних расширений? В этой статье подробно расскажу, как настроить автоматическое создание резервных копий WordPress с помощью стандартных средств хостинга и собственного скрипта.
Почему стоит автоматизировать резервное копирование без плагинов
Плагины для резервного копирования, такие как UpdraftPlus, BackWPup и другие, удобны, но имеют свои недостатки. Они могут нагружать сервер, конфликтовать с другими расширениями, а также требуют регулярного обновления и проверки. Кроме того, некоторые плагины сохраняют бэкапы на сервере, что увеличивает нагрузку на хранилище.
Автоматизация через собственные скрипты и планировщик задач сервера (cron) позволяет:
- Контролировать процесс резервного копирования полностью;
- Минимизировать нагрузку, запускать задачи в удобное время;
- Хранить копии в нужном месте — на сервере, удалённом хранилище или даже на другом сервере;
- Избежать зависимости от сторонних плагинов и возможных уязвимостей.
Как работает резервное копирование WordPress: что нужно сохранять
Для полноценного восстановления сайта необходимо сделать бэкап двух ключевых компонентов:
- Файлы сайта: ядро WordPress, темы, плагины, медиафайлы и конфигурационные файлы (например,
wp-config.php). - База данных: все записи, настройки, содержимое страниц и публикаций хранятся в MySQL.
Простой копии файлов недостаточно — без базы данных сайт не будет работать корректно. Аналогично, бэкап только базы не позволит восстановить дизайн и функционал.
Настройка автоматического создания резервных копий с помощью bash-скрипта
Для автоматизации создадим скрипт на bash, который будет создавать архив с файлами и дамп базы данных, а затем сохранять копии в отдельной папке.
Шаг 1. Создаём bash-скрипт
#!/bin/bash
# Параметры
WP_PATH="/var/www/wpmark.ru" # путь к корню сайта
BACKUP_PATH="/var/backups/wpmark" # куда сохранять бэкапы
DATE=$(date +"%Y%m%d_%H%M%S")
# Данные для подключения к базе данных
DB_NAME="wp_database"
DB_USER="wp_user"
DB_PASS="wp_password"
DB_HOST="localhost"
# Создаём папку бэкапов, если её нет
mkdir -p $BACKUP_PATH
# Создаём дамп базы данных
mysqldump -u $DB_USER -p$DB_PASS -h $DB_HOST $DB_NAME > $BACKUP_PATH/db_backup_$DATE.sql
# Создаём архив с файлами сайта
zip -r $BACKUP_PATH/files_backup_$DATE.zip $WP_PATH
# Опционально: удалить бэкапы старше 14 дней
find $BACKUP_PATH -type f -mtime +14 -exec rm {} \;
В этом скрипте мы:
- указываем пути и параметры подключения к базе данных;
- создаём дамп базы через
mysqldump; - архивируем все файлы сайта в ZIP;
- удаляем старые бэкапы старше 14 дней, чтобы не переполнять диск.
Шаг 2. Назначаем права и проверяем скрипт
Сохраняем скрипт, например, под именем wpmark_backup.sh, затем даём права на исполнение:
chmod +x wpmark_backup.sh
Запускаем вручную и убеждаемся, что бэкапы появились в папке.
Настройка автоматического запуска скрипта через cron
Чтобы резервное копирование выполнялось автоматически, добавим задачу в планировщик cron.
Как добавить задачу cron
Выполните команду:
crontab -e
В открывшемся редакторе добавьте строку, например, для запуска бэкапа каждый день в 3 часа ночи:
0 3 * * * /bin/bash /path/to/wpmark_backup.sh
Замените /path/to/wpmark_backup.sh на реальный путь к вашему скрипту.
Как отправлять резервные копии на удалённый сервер или облако
Хранение бэкапов только на сервере — рискованно. Лучше копии загружать в облако или на отдельный сервер.
Отправка на удалённый сервер по SSH
Добавьте в скрипт команду:
scp $BACKUP_PATH/db_backup_$DATE.sql user@remote-server:/backups/wpmark/
scp $BACKUP_PATH/files_backup_$DATE.zip user@remote-server:/backups/wpmark/
Для автоматизации понадобится настроить SSH-ключи без пароля.
Использование сервисов облачного хранения (Google Drive, Яндекс.Диск)
Для загрузки в облако можно использовать инструменты вроде rclone. Установите и настройте rclone, затем добавьте в скрипт:
rclone copy $BACKUP_PATH/db_backup_$DATE.sql remote:wpmark_backups/
rclone copy $BACKUP_PATH/files_backup_$DATE.zip remote:wpmark_backups/
Особенности и рекомендации по безопасности
При работе с резервными копиями важно учитывать:
- Храните бэкапы вне публичной директории сайта, чтобы к ним нельзя было получить доступ через браузер.
- Регулярно проверяйте целостность бэкапов и возможность восстановления.
- Ограничьте доступ к скриптам и папкам с бэкапами на уровне файловой системы.
- Если база данных очень большая, рассмотрите использование сжатия дампа с помощью
gzipдля экономии места.
Пример расширения скрипта: уведомления на почту о результате бэкапа
Чтобы получать уведомления, добавьте в конец скрипта:
if [ $? -eq 0 ]; then
echo "Резервное копирование выполнено успешно: $DATE" | mail -s "Резервное копирование WordPress" your-email@example.com
else
echo "Ошибка при резервном копировании: $DATE" | mail -s "Ошибка резервного копирования WordPress" your-email@example.com
fi
Для этого на сервере должен быть настроен почтовый агент.
Заключение
Автоматизация резервного копирования WordPress без плагинов — надежный и гибкий способ защитить сайт. Использование собственного скрипта и cron позволяет точно контролировать процесс, избегать зависимости от стороннего кода и оптимизировать нагрузку на сервер. Такой подход отлично подходит для продвинутых пользователей и разработчиков, желающих обеспечить максимальную стабильность и безопасность своих проектов.
Если вы хотите расширить функционал резервного копирования, рекомендую посмотреть на плагин Clearfy Pro. Он предлагает удобные инструменты оптимизации и защиту, дополняющие базовые решения.