wpbackup.ru wordpress WPBackup.ru

Как работать с резервными копиями WordPress Multisite: практические советы и примеры

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

При восстановлении важно соблюсти порядок:

  1. Восстановить базу данных из дампа, используя команду mysql или phpMyAdmin.
  2. Разместить папки uploads в нужном месте, сохранив структуру поддиректорий.
  3. Проверить права на файлы и папки, чтобы WordPress мог корректно их читать.
  4. Если менялись пути или домены, обновить их в базе через поиск и замену (например, с помощью 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.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее