Автоматическое создание резервных копий WordPress: лучшие практики и примеры кода

Зачем нужны автоматические резервные копии WordPress

Резервное копирование — это базовая мера защиты любого сайта на WordPress. Даже если вы тщательно следите за обновлениями и безопасностью, всегда существует риск потери данных из-за ошибок, взломов или сбоев хостинга. Автоматизация процесса создания резервных копий позволяет не забывать делать их вовремя и обеспечивает быстрый откат к рабочей версии сайта.

В этой статье мы рассмотрим, как организовать автоматическое резервное копирование WordPress двумя основными способами: с помощью популярных плагинов и написанием собственного PHP-скрипта для интеграции в cron. Вы узнаете, как настроить резервные копии базы данных и файлов, а также как хранить их в безопасном месте.

Популярные плагины для автоматического резервного копирования WordPress

UpdraftPlus — универсальное решение для бэкапов

UpdraftPlus — один из самых популярных и надежных плагинов для резервного копирования. Он позволяет автоматически создавать копии базы данных, файлов темы, плагинов и медиа, а также выгружать их на облачные хранилища: Google Drive, Dropbox, Amazon S3 и другие.

Настройка UpdraftPlus проста: после установки перейдите в настройки плагина, выберите расписание (например, ежедневно или еженедельно), настройте количество хранимых копий и укажите место хранения. Плагин умеет автоматически удалять устаревшие бэкапы, экономя место на сервере.

Преимущества UpdraftPlus:

  • Поддержка множества облачных сервисов.
  • Инкрементальные бэкапы — экономия ресурсов.
  • Возможность восстановления сайта прямо из админки.

BackWPup — расширенные возможности для продвинутых пользователей

BackWPup — еще один мощный плагин с гибкими настройками. Он умеет создавать резервные копии базы данных, файлов и даже экспортировать их в ZIP-архивы. Плюс — интеграция с FTP, Dropbox, S3 и другими сервисами.

Особенность BackWPup — возможность запускать резервное копирование через WP-CRON или системный cron, что повышает надежность и точность выполнения задач. Также есть опция проверки целостности файлов после бэкапа.

Реализация автоматического резервного копирования через PHP и WP-CRON

Создаем функцию для резервного копирования базы данных

Если вы хотите иметь полный контроль, можно написать свою функцию для создания резервных копий. Ниже пример функции wpinfo_backup_database, которая экспортирует базу данных в SQL-файл и сохраняет его в папке wp-content/backups. Для работы потребуется подключить доступ к базе и использовать стандартные функции PHP:

function wpinfo_backup_database() {
    global $wpdb;
    $backup_dir = WP_CONTENT_DIR . '/backups';
    if (!file_exists($backup_dir)) {
        mkdir($backup_dir, 0755, true);
    }
    $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, $output, $return_var);

    if ($return_var !== 0) {
        error_log('Ошибка создания бэкапа базы данных');
        return false;
    }

    return $filepath;
}

Эта функция использует системную утилиту mysqldump, поэтому ваш сервер должен иметь к ней доступ. Если сервер не поддерживает exec или mysqldump, придется использовать PHP-библиотеки для экспорта.

Добавляем задачу в WP-CRON для регулярного запуска бэкапа

Для автоматизации добавим задачу в WP-CRON, которая будет запускать функцию создания резервной копии, например, каждый день в полночь:

add_action('wpinfo_daily_backup_event', 'wpinfo_backup_database');

function wpinfo_activate_backup_cron() {
    if (!wp_next_scheduled('wpinfo_daily_backup_event')) {
        wp_schedule_event(strtotime('00:00:00'), 'daily', 'wpinfo_daily_backup_event');
    }
}
add_action('wp', 'wpinfo_activate_backup_cron');

Этот код проверяет, не запланирована ли уже задача, и если нет — добавляет ее. Таким образом, функция wpinfo_backup_database будет вызываться автоматически каждый день.

Резервное копирование файлов сайта

Резервное копирование базы данных — это только часть задачи. Для полного восстановления сайта важно иметь копии файлов, включая темы, плагины и загрузки. Пример функции wpinfo_backup_files ниже создаст ZIP-архив папки wp-content/uploads:

function wpinfo_backup_files() {
    $zip = new ZipArchive();
    $backup_dir = WP_CONTENT_DIR . '/backups';

    if (!file_exists($backup_dir)) {
        mkdir($backup_dir, 0755, true);
    }

    $zip_name = 'uploads-backup-' . date('Y-m-d-H-i-s') . '.zip';
    $zip_path = $backup_dir . '/' . $zip_name;

    if ($zip->open($zip_path, ZipArchive::CREATE) !== true) {
        error_log('Не удалось создать архив для бэкапа файлов');
        return false;
    }

    $source = WP_CONTENT_DIR . '/uploads';

    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($source),
        RecursiveIteratorIterator::LEAVES_ONLY
    );

    foreach ($files as $name => $file) {
        if (!$file->isDir()) {
            $filePath = $file->getRealPath();
            $relativePath = substr($filePath, strlen($source) + 1);
            $zip->addFile($filePath, $relativePath);
        }
    }

    $zip->close();
    return $zip_path;
}

Эту функцию можно добавить к задаче WP-CRON для создания архивов с файлами сайта по расписанию.

Рекомендации по хранению и безопасности резервных копий

Создание копий — только половина дела. Не менее важно, где и как вы их храните.

  • Облачные хранилища: Для надежности лучше выгружать бэкапы на удаленные сервисы. Плагины UpdraftPlus и BackWPup поддерживают интеграцию с Google Drive, Dropbox, Amazon S3 и другими.
  • Ограничение доступа: Папка с резервными копиями не должна быть доступна из браузера. Добавьте в нее .htaccess с запретом доступа или храните копии вне корня сайта.
  • Шифрование файлов: Для дополнительной безопасности можно использовать шифрование архивов с помощью внешних утилит или PHP-библиотек.
  • Очистка старых копий: Автоматически удаляйте устаревшие бэкапы, чтобы не переполнять диск. В коде можно реализовать проверку возраста файлов и удаление старых.

Использование WPShop решений для резервного копирования

Хотя WPShop не предлагает специализированных плагинов для резервного копирования, вы можете использовать универсальные инструменты и интегрировать их с другими продуктами для управления сайтом. Например, плагин Clearfy Pro помогает оптимизировать работу сайта и повысить безопасность, что косвенно уменьшает риски потери данных.

Также рекомендуем регулярно проверять целостность сайта с помощью плагинов мониторинга и использовать надежные темы из каталога WPShop, такие как Reboot, чтобы снизить вероятность ошибок, приводящих к потере данных.

WooCommerce: как сделать автоматическое изменение стоимости товара при определённых условиях
08.05.2026
WooCommerce: как автоматически изменить стоимость товара при регистрации пользователя
29.05.2026
Как автоматически переводить посты WordPress на другие языки
02.03.2026
Как использовать REST API в WordPress для создания плагинов
24.11.2025
Автоматическое удаление старого контента в WordPress: эффективные методы и примеры
11.01.2026