Зачем нужна автоматизация создания резервных копий в WordPress
Резервные копии сайта — это ваша страховка от потери данных из-за сбоев, взломов или ошибок при обновлениях. Ручное создание бэкапов неудобно и зачастую забывается. Поэтому важно настроить автоматическую систему, которая будет регулярно сохранять актуальные копии базы данных и файлов сайта.
В WordPress для таких задач используется WP-Cron — встроенный механизм планировщика событий, позволяющий запускать задачи по расписанию без участия администратора.
В этом материале мы подробно разберём, как реализовать автоматическое создание бэкапов с помощью WP-Cron, а также рассмотрим примеры кода и полезные плагины для решения задачи.
Как работает WP-Cron и как его использовать для задач бэкапа
WP-Cron — это имитация системного cron, который запускается при посещении сайта. Он проверяет, есть ли запланированные события, и запускает их в нужное время.
Чтобы настроить автоматический бэкап, нужно:
- Создать функцию, которая будет делать резервную копию — например, базы данных и важных директорий.
- Зарегистрировать событие с помощью
wp_schedule_event()с нужным интервалом. - Привязать вашу функцию к этому событию через
add_action().
Далее рассмотрим пример реализации.
Пример кода: создание простой функции бэкапа и планировщика в WP-Cron
function wpapp_create_backup() {
global $wpdb;
$upload_dir = wp_upload_dir();
$backup_dir = $upload_dir['basedir'] . '/wpapp-backups';
if (!file_exists($backup_dir)) {
wp_mkdir_p($backup_dir);
}
// Создаем дамп базы данных
$filename = 'db-backup-' . date('Y-m-d-H-i-s') . '.sql';
$filepath = $backup_dir . '/' . $filename;
$command = sprintf(
'mysqldump --user=%s --password=%s --host=%s %s > %s',
DB_USER, DB_PASSWORD, DB_HOST, DB_NAME, escapeshellarg($filepath)
);
exec($command);
// Дополнительно можно архивировать файлы сайта, если нужно
// Например, wp-content/uploads
$zip = new ZipArchive();
$zipname = $backup_dir . '/uploads-backup-' . date('Y-m-d-H-i-s') . '.zip';
if ($zip->open($zipname, ZipArchive::CREATE) === TRUE) {
$path = $upload_dir['basedir'];
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach ($files as $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($path) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
}
}
// Регистрируем событие при активации плагина или темы
function wpapp_schedule_backup() {
if (!wp_next_scheduled('wpapp_daily_backup_event')) {
wp_schedule_event(time(), 'daily', 'wpapp_daily_backup_event');
}
}
add_action('wp', 'wpapp_schedule_backup');
// Привязываем функцию к событию
add_action('wpapp_daily_backup_event', 'wpapp_create_backup');
// Очистка по деактивации
function wpapp_clear_scheduled_backup() {
$timestamp = wp_next_scheduled('wpapp_daily_backup_event');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wpapp_daily_backup_event');
}
}Этот код создает ежедневный бэкап базы данных и архивирует папку uploads. Важно, чтобы на сервере была доступна команда mysqldump и разрешены exec-вызовы.
Использование плагинов для автоматического бэкапа с WP-Cron
Если у вас нет возможности писать собственный код или хочется удобный интерфейс, рекомендуем плагины с поддержкой WP-Cron:
- UpdraftPlus — популярный плагин с гибкой настройкой расписания, поддержкой облачных хранилищ и возможностью восстановления.
- BackWPup — позволяет создавать задания по расписанию, экспортировать бэкапы в Dropbox, FTP, S3 и другие сервисы.
- WPBackItUp — простой и эффективный плагин с основным функционалом автоматического сохранения.
В этих плагинах расписание запуска бэкапов строится на WP-Cron, что гарантирует регулярность при активном трафике.
Настройка UpdraftPlus для автоматического бэкапа
В админке WordPress перейдите в Настройки > UpdraftPlus Backups. В разделе «Настройка расписания» выберите желаемую периодичность для базы данных и файлов (например, ежедневно). Укажите место хранения (например, Dropbox или Google Drive).
Плагин будет автоматически запускать бэкапы по расписанию, используя WP-Cron. Это простой и надежный способ обеспечить регулярное резервное копирование без дополнительного кода.
Как улучшить надежность WP-Cron для задач бэкапа
WP-Cron срабатывает при посещении сайта, поэтому при низкой посещаемости задачи могут запускаться с задержкой.
Чтобы повысить надежность:
- Настройте системный cron на сервере, чтобы вызывать
wp-cron.phpрегулярно. Например, каждую пятиминутку:
wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1- Отключите встроенный WP-Cron, добавив в
wp-config.phpстрокуdefine('DISABLE_WP_CRON', true);. - Используйте плагин Clearfy Pro, который оптимизирует работу WP-Cron и уменьшает нагрузки.
Так вы сделаете запуск бэкапов более точным и своевременным.
Резюме и советы по безопасности
Автоматизация бэкапов — обязательный элемент поддержки любого сайта на WordPress. С помощью WP-Cron можно реализовать гибкие задачи без нагрузки на сервер.
Но помните:
- Храните бэкапы вне основного сервера — в облаках или на удаленных дисках.
- Периодически проверяйте работоспособность восстановления из бэкапов.
- Защищайте папки с бэкапами от публичного доступа через .htaccess или серверные правила.
- Используйте проверенные плагины с хорошими отзывами и обновлениями.
При необходимости можно комбинировать собственный код и плагины, чтобы получить оптимальное решение под задачи вашего проекта.
Для удобства рекомендуем посмотреть плагин Clearfy Pro, который среди прочих функций помогает управлять WP-Cron и улучшать производительность сайта.