Как создать автоматические резервные копии WordPress: плагины и код

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

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

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

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

UpdraftPlus — универсальный и надежный

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

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

BackWPup — широкие возможности и интеграции

BackWPup позволяет делать резервные копии базы данных, файлов и даже экспортировать список плагинов. Отличается гибкой настройкой расписания и хранения данных в различных внешних сервисах. Бесплатная версия покрывает большинство задач, а платная добавляет расширенную поддержку и функции.

WPvivid Backup — удобный интерфейс и бесплатный функционал

WPvivid Backup предлагает удобный интерфейс для настройки автоматических бэкапов и миграций сайта. Особенность плагина — встроенный планировщик и возможность выбора отдельных папок и баз данных для резервного копирования. Поддерживает удаленное хранение и отправку по FTP.

Как настроить автоматическое резервное копирование с помощью плагинов

Пример настройки UpdraftPlus:

  • Зайдите в админку WordPress → Плагины → Добавить новый, найдите UpdraftPlus и установите его.
  • Перейдите в Настройки → UpdraftPlus Backups.
  • Выберите расписание для файлов и базы данных, например, ежедневно или еженедельно.
  • Настройте удаленное хранилище (Google Drive, Dropbox и т.д.), следуя инструкции плагина.
  • Нажмите «Сохранить изменения» и создайте первую резервную копию вручную для проверки.

Таким образом, вы обеспечите регулярное создание резервных копий без вашего участия.

Создаем собственный скрипт для автоматического бэкапа базы данных и файлов

Если вы хотите реализовать более тонкий контроль или интегрировать резервное копирование в свой плагин или тему, можно написать собственный код. Рассмотрим пример функции wplite_create_backup(), которая экспортирует базу данных и архивирует папку с файлами сайта.

function wplite_create_backup() {
    global $wpdb;
    $upload_dir = wp_upload_dir();
    $backup_dir = $upload_dir['basedir'] . '/wplite_backups';

    if (!file_exists($backup_dir)) {
        wp_mkdir_p($backup_dir);
    }

    // Создаем дамп базы данных
    $db_file = $backup_dir . '/db_backup_' . date('Y-m-d_H-i-s') . '.sql';
    $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
    $handle = fopen($db_file, 'w');

    foreach ($tables as $table) {
        $table_name = $table[0];
        $create_table = $wpdb->get_row('SHOW CREATE TABLE ' . $table_name, ARRAY_N);
        fwrite($handle, "DROP TABLE IF EXISTS `" . $table_name . "`;");
        fwrite($handle, "\n" . $create_table[1] . ";\n\n");

        $rows = $wpdb->get_results('SELECT * FROM ' . $table_name, ARRAY_A);
        foreach ($rows as $row) {
            $values = array_map('esc_sql', array_values($row));
            $values = array_map(function($v) { return "'" . str_replace("'", "''", $v) . "'"; }, $values);
            fwrite($handle, "INSERT INTO `" . $table_name . "` VALUES (" . implode(',', $values) . ");\n");
        }
        fwrite($handle, "\n");
    }

    fclose($handle);

    // Создаем архив файлов wp-content/uploads
    $zip_file = $backup_dir . '/uploads_backup_' . date('Y-m-d_H-i-s') . '.zip';
    $zip = new ZipArchive();
    if ($zip->open($zip_file, ZipArchive::CREATE) === TRUE) {
        $upload_path = $upload_dir['basedir'];
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($upload_path));

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

    return ['db_backup' => $db_file, 'uploads_backup' => $zip_file];
}

Этот код создает SQL-дамп базы данных и архивирует папку uploads в директории wp-content. Результатом работы функции будет массив с путями к файлам резервных копий, которые можно затем отправить на email, сохранить на удаленный сервер или предложить скачать в админке.

Как запустить автоматический бэкап по расписанию

Для автоматизации запуска функции wplite_create_backup() используйте WP-Cron. Добавьте следующий код в файл functions.php вашей темы или в плагин:

if (!wp_next_scheduled('wplite_daily_backup')) {
    wp_schedule_event(time(), 'daily', 'wplite_daily_backup');
}

add_action('wplite_daily_backup', 'wplite_create_backup');

Этот код планирует ежедневный запуск бэкапа. При желании можно изменить интервал на 'hourly' или 'twicedaily'. Для создания пользовательских интервалов нужно дополнительно использовать фильтр cron_schedules.

Хранение и безопасность резервных копий

Важно не только создавать резервные копии, но и надежно их хранить. Не рекомендуется держать бэкапы в публичной папке сайта, чтобы исключить доступ злоумышленников. Лучше настроить отправку копий на удаленный сервер, облачное хранилище или по email.

В случае собственного решения с кодом можно добавить отправку файлов по FTP или через API облачных сервисов. Например, можно интегрировать Google Drive API или Amazon S3 SDK для автоматической загрузки копий.

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

Советы по оптимизации процесса резервного копирования

Чтобы не перегружать сервер и не занимать слишком много места, используйте следующие рекомендации:

  • Планируйте резервные копии в периоды наименьшей нагрузки на сайт.
  • Используйте инкрементное копирование, если плагин поддерживает эту функцию — это снизит объем создаваемых файлов.
  • Ограничивайте количество сохраняемых копий, удаляя самые старые.
  • Избегайте бэкапа кэша и временных файлов, включайте только необходимые каталоги.
  • Регулярно проверяйте настройки и обновляйте используемые инструменты.

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

Как использовать функции WooCommerce в WordPress для разработки
04.12.2025
Удаление неиспользуемых видов постов в WordPress: практическое руководство
06.01.2026
Как удалить неиспользуемые шорткоды в WordPress
31.03.2026
Как решить проблему неработающих скриптов в WordPress
16.02.2026
Как настроить раздельные роли пользователей в WordPress с помощью кода
20.03.2026