Резервное копирование сайта WordPress — одна из важнейших задач для каждого владельца и разработчика. Однако многие сталкиваются с ошибками и проблемами при создании и восстановлении резервных копий. В этой статье мы подробно разберём, как избежать типичных ошибок, какие плагины выбрать и как настроить бэкапы с учётом особенностей вашего сайта.
Почему резервное копирование иногда не работает: распространённые ошибки и их причины
Первое, с чем сталкиваются пользователи — резервное копирование не запускается или завершается с ошибками. Чаще всего это связано с:
- Недостатком прав доступа к папкам и файлам сайта.
- Ограничениями хостинга по времени выполнения скриптов (max_execution_time).
- Неправильной настройкой плагинов для бэкапа.
- Большим объёмом данных, который тяжело обработать за отведённое время.
- Конфликтами с другими плагинами безопасности или оптимизации.
Чтобы избежать этих проблем, необходимо проверять логи ошибок и внимательно читать сообщения плагина при сбое.
Проверка прав и ограничений сервера
Для корректной работы бэкапа необходимо, чтобы веб-сервер и PHP имели права на чтение всех файлов сайта, а также на запись в папки, куда сохраняются архивы. Проверьте, что владелец файлов совпадает с пользователем веб-сервера.
Кроме того, часто на хостингах действует ограничение на длительность выполнения скриптов (например, 30 секунд). При большом сайте это может приводить к прерыванию процесса бэкапа. В таких случаях стоит увеличить параметр max_execution_time в php.ini или использовать инкрементальные (поэтапные) бэкапы.
Выбор плагина для резервного копирования: плюсы и минусы популярных решений
Рассмотрим несколько популярных плагинов для бэкапа, их особенности и возможные проблемы.
UpdraftPlus
Самый распространённый плагин с бесплатной и PRO-версией. Позволяет делать автоматические или ручные бэкапы, сохранять копии на облака (Google Drive, Dropbox и др.).
Преимущества:
- Простая настройка и интерфейс.
- Поддержка инкрементальных бэкапов в PRO версии.
- Возможность восстановления сайта прямо из панели.
Недостатки:
- Бесплатная версия не поддерживает инкрементальные бэкапы.
- Может конфликтовать с некоторыми плагинами кэширования.
WPvivid Backup
Молодой, но активно развивающийся плагин с удобным функционалом. Позволяет делать резервные копии и миграции.
Преимущества:
- Поддержка бэкапов на удалённые хранилища.
- Миграция с одного сайта на другой в несколько кликов.
- Автоматизация с расписанием.
Недостатки:
- Иногда возникают проблемы с восстановлением больших сайтов.
- Отсутствует продвинутый контроль инкрементальных копий в бесплатной версии.
Настройка автоматического резервного копирования с помощью WPChecker_backup_schedule()
Для тех, кто предпочитает иметь полный контроль и минимизировать количество плагинов, можно написать собственный скрипт резервного копирования. Рассмотрим пример функции WPChecker_backup_schedule(), которая создаёт расписание бэкапов через WP-Cron.
function WPChecker_backup_schedule() {
if (!wp_next_scheduled('wpchecker_daily_backup')) {
wp_schedule_event(time(), 'daily', 'wpchecker_daily_backup');
}
}
add_action('wp', 'WPChecker_backup_schedule');
function WPChecker_do_backup() {
// Путь к папке с бэкапами
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$filename = 'backup-' . date('Y-m-d-H-i-s') . '.zip';
$filepath = $backup_dir . '/' . $filename;
$zip = new ZipArchive();
if ($zip->open($filepath, ZipArchive::CREATE) === TRUE) {
// Добавляем папку с файлами сайта
$root = ABSPATH;
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($root));
foreach ($iterator as $file) {
if ($file->isDir()) continue;
$filePath = $file->getRealPath();
// Исключаем папку backups и wp-content/cache
if (strpos($filePath, $backup_dir) === 0) continue;
if (strpos($filePath, WP_CONTENT_DIR . '/cache') === 0) continue;
$relativePath = substr($filePath, strlen($root));
$zip->addFile($filePath, $relativePath);
}
$zip->close();
}
// Можно добавить копию базы данных
}
add_action('wpchecker_daily_backup', 'WPChecker_do_backup');Этот код создаст ежесуточный архив файлов сайта, исключая кеш и сами резервные копии, чтобы избежать зацикливания. Для полной копии сайта стоит добавить экспорт базы данных, например, через функцию WPChecker_export_db(), которая выполнит дамп MySQL.
Экспорт базы данных WordPress в резервных копиях
Для бэкапа базы данных можно использовать следующий код:
function WPChecker_export_db() {
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
$sql = '';
foreach ($tables as $table) {
$table_name = $table[0];
$create_table = $wpdb->get_row("SHOW CREATE TABLE $table_name", ARRAY_N);
$sql .= $create_table[1] . ";\n\n";
$rows = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A);
foreach ($rows as $row) {
$vals = array_map(array($wpdb, 'escape'), array_values($row));
$sql .= "INSERT INTO $table_name VALUES('" . implode("','", $vals) . "');\n";
}
$sql .= "\n";
}
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$file = $backup_dir . '/db-backup-' . date('Y-m-d-H-i-s') . '.sql';
file_put_contents($file, $sql);
}После создания дампа базы его можно добавить внутрь ZIP-архива в функции WPChecker_do_backup() или хранить отдельно.
Хранение и безопасность резервных копий
Очень важный момент — где хранить резервные копии. Хранение бэкапов на том же сервере, что и сайт, чревато потерей данных при сбое или взломе. Лучше использовать удалённые хранилища:
- Облако Google Drive, Dropbox, Amazon S3 (поддерживаются большинством плагинов).
- FTP или SFTP на отдельном сервере.
- Локальный компьютер с автоматической загрузкой.
Для автоматической загрузки в облако можно использовать плагины UpdraftPlus или WPvivid, либо настроить скрипты с API. Также важно защитить папку с копиями на сервере через .htaccess или серверные настройки, чтобы доступ к архивам был ограничен.
Пример настройки бэкапа с плагином UpdraftPlus и интеграцией с wpchecker.ru
Для быстрой и надёжной организации резервного копирования рекомендуем использовать UpdraftPlus. Вот как правильно его настроить:
- Установите и активируйте плагин.
- Перейдите в Настройки > UpdraftPlus Backup.
- В разделе Настройка расписания выберите частоту и количество сохраняемых копий.
- Выберите удалённое хранилище, например Google Drive, и пройдите авторизацию.
- Сохраните настройки и запустите тестовый бэкап.
После этого ваши копии будут надёжно сохраняться вне сервера, а при необходимости можно быстро восстановить сайт.
Советы по уменьшению размера резервных копий
Большой размер архива усложняет хранение и замедляет процесс бэкапа. Вот как можно уменьшить размер:
- Исключить папки с кэшем и временными файлами.
- Не включать папку
wp-content/uploads, если там много медиа, а использовать отдельные бэкапы для них. - Использовать инкрементальные бэкапы, чтобы сохранять только изменения.
- Оптимизировать базу данных, удаляя ревизии и спам-комментарии.
Для оптимизации базы данных рекомендуем плагин Clearfy Pro, который позволяет автоматизировать очистку данных.