Автоматическое создание резервных копий в WordPress с помощью кода и плагинов

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

Почему важно автоматизировать создание бэкапов в WordPress

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

Важные аспекты автоматизации:

  • Регулярность — расписание создания копий (ежедневно, еженедельно и т.д.)
  • Хранение — локально, на FTP, в облаке (Google Drive, Dropbox, Amazon S3)
  • Уведомления — информирование о статусе бэкапа
  • Минимальное влияние на производительность сайта

Автоматическое создание резервных копий через WP-Cron и код

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

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

Для начала создадим функцию wpsystem_create_db_backup, которая выгружает базу данных в SQL-файл.

function wpsystem_create_db_backup() {
    global $wpdb;
    $backup_dir = WP_CONTENT_DIR . '/backups';
    if (!file_exists($backup_dir)) {
        wp_mkdir_p($backup_dir);
    }
    $filename = 'db-backup-' . date('Y-m-d-H-i-s') . '.sql';
    $filepath = $backup_dir . '/' . $filename;

    $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
    $sql_dump = "";

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

";

        $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($val) { return "'" . addslashes($val) . "'"; }, $values);
            $sql_dump .= "INSERT INTO `$table_name` VALUES (" . implode(',', $values) . ");
";
        }
        $sql_dump .= "
";
    }

    file_put_contents($filepath, $sql_dump);

    // Можно добавить отправку файла на email или в облако здесь
}

Регистрация задачи WP-Cron для автоматического запуска бэкапа

Зарегистрируем событие, которое будет запускаться ежедневно. Добавим в functions.php или в свой плагин:

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

add_action('wpsystem_daily_db_backup', 'wpsystem_create_db_backup');

Теперь функция wpsystem_create_db_backup будет запускаться автоматически раз в сутки.

Как хранить резервные копии на удалённых сервисах

Хранить бэкапы только на сервере рискованно — при сбое или взломе сайта копии могут быть потеряны. Лучше использовать облачные хранилища или FTP-серверы.

Загрузка бэкапа на Google Drive с помощью плагина

Если вы не хотите реализовывать загрузку на облако через код, рекомендуем использовать плагин Google Drive Backup из каталога WPSHOP — он позволяет автоматически выгружать резервные копии в Google Drive с удобным управлением.

Пример кода для загрузки файла на FTP сервер

Если хотите сделать автоматическую отправку резервной копии на FTP, можно добавить в функцию wpsystem_create_db_backup следующий код (укажите свои данные):

$ftp_server = 'ftp.example.com';
$ftp_user = 'user';
$ftp_pass = 'password';

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);

if ($conn_id && $login_result) {
    ftp_pasv($conn_id, true);
    ftp_put($conn_id, '/backups/' . $filename, $filepath, FTP_BINARY);
    ftp_close($conn_id);
} else {
    error_log('FTP connection failed for backup upload');
}

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

Если вы предпочитаете не писать код, есть проверенные плагины с гибкими настройками автоматизации:

  • UpdraftPlus — один из самых популярных и надёжных плагинов с поддержкой облаков (Google Drive, Dropbox, Amazon S3 и др.), расписанием, шифрованием.
  • BackWPup — бесплатный плагин с возможностью планирования бэкапов и загрузки на удалённые сервисы.
  • WPvivid Backup — удобный интерфейс и множество опций, включая миграцию.

Для интеграции с WPSHOP рекомендую посмотреть Clearfy Pro, который оптимизирует работу сайта и совместим с плагинами бэкапа.

Рекомендации по безопасности и производительности

Автоматизация резервного копирования требует внимательности к безопасному хранению копий и минимальному влиянию на скорость сайта. Вот несколько советов:

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

Выводы

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

Оптимизация базы данных WordPress: эффективные методы и примеры кода
23.11.2025
Как сделать эффективный кэш в WordPress для уменьшения нагрузки на сервер
28.01.2026
WooCommerce: как использовать хук woocommerce_before_cart для добавления кастомного уведомления
04.06.2026
Как создать динамический выбор сообщений в админке WordPress
31.01.2026
Добавление дополнительного поля в форму регистрации WordPress
22.03.2026