WordPress Multisite — мощный инструмент для управления несколькими сайтами на одной установке WordPress. Однако резервное копирование такой системы требует особого подхода, учитывая сложность структуры и взаимозависимость сайтов. В этой статье мы рассмотрим, как правильно создавать и восстанавливать резервные копии WordPress Multisite, какие плагины помогают в этом, а также приведём практические примеры кода для автоматизации процесса.
Особенности резервного копирования WordPress Multisite
В отличие от одиночного сайта, WordPress Multisite хранит данные всех сайтов в одной базе данных, но с использованием отдельных таблиц для каждого под-сайта. Файлы медиа и темы также могут быть распределены по разным папкам, что усложняет задачу бэкапа.
Основные особенности, на которые стоит обратить внимание:
- Необходимо бэкапить всю базу данных целиком, чтобы сохранить целостность сети.
- Файлы загрузок для каждого сайта хранятся в папках вида
wp-content/uploads/sites/{site_id}, их нужно сохранять отдельно. - В случае восстановления важно корректно сопоставить данные базы и файлов.
Простой бэкап отдельных сайтов из сети без учета мультисайтовой структуры может привести к некорректной работе после восстановления.
Плагины для резервного копирования WordPress Multisite
Существует несколько популярных плагинов, которые поддерживают мультисайтовую структуру:
- UpdraftPlus — один из самых известных бэкап-плагинов, поддерживает мультисайт и позволяет создавать резервные копии баз данных и файлов с возможностью хранения в облачных сервисах.
- BackupBuddy — коммерческий плагин с функциями мультисайтового резервного копирования, позволяет удобно управлять копиями и восстанавливать отдельные сайты.
- WPvivid Backup — бесплатный и платный плагин с поддержкой мультисайта, простым интерфейсом и возможностью автоматизации.
Например, чтобы настроить резервное копирование всей сети с UpdraftPlus, нужно активировать плагин в сети и в настройках выбрать опцию бэкапа для всей мультисайтовой установки. Это гарантирует, что база и все файлы будут сохранены целиком.
Пример настройки автоматического бэкапа с WPvivid Backup
WPvivid поддерживает мультисайт и позволяет запускать бэкап по расписанию. Чтобы запустить резервное копирование всей сети, достаточно активировать плагин в сети и настроить расписание в разделе «Settings».
В интерфейсе можно указать, какие типы файлов и база данных должны бэкапиться, а также выбрать место хранения — FTP, Dropbox, Google Drive и т.д.
Кастомные решения для резервного копирования Multisite с помощью кода
Если вы хотите гибко управлять процессом резервного копирования или интегрировать его в собственные процессы, можно написать скрипт на PHP, который будет создавать бэкап базы и файлов.
Ниже пример функции wpbackup_create_multisite_backup(), которая создаёт дамп базы и архивирует папку uploads для всего мультисайта:
function wpbackup_create_multisite_backup() {
global $wpdb;
$upload_dir = wp_upload_dir();
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$date = date('Y-m-d_H-i-s');
$db_backup_file = $backup_dir . '/multisite-db-backup-' . $date . '.sql';
$uploads_backup_file = $backup_dir . '/multisite-uploads-backup-' . $date . '.zip';
// Создаём дамп базы всей мультисети
$command = 'mysqldump --user=' . DB_USER . ' --password=' . DB_PASSWORD . ' --host=' . DB_HOST . ' ' . DB_NAME . ' > ' . escapeshellarg($db_backup_file);
exec($command, $output, $return_var);
if ($return_var !== 0) {
error_log('Ошибка создания дампа базы данных');
return false;
}
// Архивируем папку uploads всей сети
$zip = new ZipArchive();
if ($zip->open($uploads_backup_file, ZipArchive::CREATE) !== TRUE) {
error_log('Не удалось создать архив для uploads');
return false;
}
$uploads_path = $upload_dir['basedir'];
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($uploads_path));
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($uploads_path) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
return ['db' => $db_backup_file, 'uploads' => $uploads_backup_file];
}Этот пример использует системную утилиту mysqldump для создания резервной копии базы данных всей мультисети, а затем архивирует папку uploads, где хранятся медиафайлы всех сайтов.
Для автоматизации можно подключить вызов этой функции к WP-Cron или запускать по SSH.
Восстановление из резервной копии Multisite
При восстановлении важно соблюсти порядок:
- Восстановить базу данных из дампа, используя команду
mysqlили phpMyAdmin. - Разместить папки uploads в нужном месте, сохранив структуру поддиректорий.
- Проверить права на файлы и папки, чтобы WordPress мог корректно их читать.
- Если менялись пути или домены, обновить их в базе через поиск и замену (например, с помощью WP-CLI:
wp search-replace 'старый_домен' 'новый_домен' --network).
Советы по оптимизации резервного копирования Multisite
Использование инкрементальных бэкапов
Для экономии места и времени лучше использовать инкрементальные резервные копии — сохранять только изменения с прошлого бэкапа. Многие плагины, например UpdraftPlus Premium, поддерживают такую функцию.
Если вы реализуете кастомное решение, можно использовать rsync с ключом --link-dest для создания инкрементальных копий папки uploads.
Хранение бэкапов вне сервера
Не храните резервные копии на том же сервере, где размещён сайт — это риск потери данных при сбое. Подключайте облачные хранилища (Google Drive, Яндекс.Диск) или удалённые FTP-серверы.
Пример подключения к Яндекс.Диску с помощью плагина WPvivid: в настройках укажите OAuth-токен и путь для хранения, это позволит автоматически выгружать бэкапы.
Мониторинг и уведомления
Настройте уведомления о статусе бэкапа — по email или в мессенджеры — чтобы вовремя реагировать на сбои. Многие плагины поддерживают интеграцию с Telegram или Slack.
Заключение
Резервное копирование WordPress Multisite требует внимательности и понимания структуры сети. Используйте готовые плагины с поддержкой мультисайта или создавайте кастомные решения с учётом особенностей базы и файлов. Обязательно тестируйте восстановление бэкапов, чтобы убедиться в их работоспособности.
Для удобного создания и управления резервными копиями рекомендуем ознакомиться с плагинами на WPShop.ru, где представлены инструменты, совместимые с мультисайт WordPress.