Как создать автоматический резервный копий WordPress с помощью WP-Cron

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

Что такое WP-Cron и почему он подходит для резервного копирования WordPress

WP-Cron — это виртуальный планировщик задач WordPress, который запускает события в определённое время. В отличие от системного cron на сервере, WP-Cron запускается при посещении сайта. Это удобно, потому что не требует доступа к серверу, но стоит учитывать, что задачи могут запускаться с задержкой при низкой посещаемости.

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

WP-Cron может запускать PHP-функции, которые будут архивировать базу данных и файлы сайта, а затем сохранять копию в безопасном месте, например, на FTP, в облаке или отправлять на email.

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

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

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

Эти плагины можно найти и скачать на WPSHOP.RU — магазине проверенных решений для WordPress.

Как написать свой скрипт автоматического резервного копирования с использованием WP-Cron

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

Шаг 1. Регистрация задачи WP-Cron

add_action('wpskill_backup_event', 'wpskill_create_backup');

function wpskill_activate_backup_schedule() {
    if (!wp_next_scheduled('wpskill_backup_event')) {
        wp_schedule_event(time(), 'daily', 'wpskill_backup_event');
    }
}
register_activation_hook(__FILE__, 'wpskill_activate_backup_schedule');

function wpskill_deactivate_backup_schedule() {
    wp_clear_scheduled_hook('wpskill_backup_event');
}
register_deactivation_hook(__FILE__, 'wpskill_deactivate_backup_schedule');

В этом коде мы создаём ежедневное событие wpskill_backup_event, которое будет запускать функцию wpskill_create_backup.

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

function wpskill_create_backup() {
    global $wpdb;
    $backup_dir = WP_CONTENT_DIR . '/backups';
    if (!file_exists($backup_dir)) {
        wp_mkdir_p($backup_dir);
    }

    $filename = $backup_dir . '/db-backup-' . date('Y-m-d-H-i-s') . '.sql';

    $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 .= $create_table[1] . ";\n\n";

        $rows = $wpdb->get_results('SELECT * FROM ' . $table_name, ARRAY_A);
        foreach ($rows as $row) {
            $values = array_map(function($val) use ($wpdb) {
                return isset($val) ? "'" . esc_sql($val) . "'" : 'NULL';
            }, array_values($row));
            $sql_dump .= "INSERT INTO $table_name VALUES(" . implode(",", $values) . ");\n";
        }
        $sql_dump .= "\n";
    }

    file_put_contents($filename, $sql_dump);
}

Этот код создаёт дамп всех таблиц базы данных и сохраняет его в файл с отметкой времени.

Шаг 3. Добавление архивирования и уведомления

Для экономии места вместо хранения сырых SQL-файлов можно архивировать их, а также отправлять уведомление на email или загружать в облако.

function wpskill_create_backup() {
    // ... код создания дампа, как выше

    $zip = new ZipArchive();
    $zip_filename = $backup_dir . '/backup-' . date('Y-m-d-H-i-s') . '.zip';
    if ($zip->open($zip_filename, ZipArchive::CREATE) === TRUE) {
        $zip->addFile($filename, basename($filename));
        $zip->close();
        unlink($filename); // удаляем сырой файл
    }

    // Отправляем уведомление
    wp_mail('you@example.com', 'Резервная копия создана', 'Резервная копия сайта создана и сохранена: ' . $zip_filename);
}

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

Очень важно хранить резервные копии в безопасном месте, чтобы злоумышленники не получили к ним доступ. Рекомендуется не оставлять бэкапы в открытом каталоге сайта. Лучше организовать загрузку в облако или на удалённый FTP-сервер.

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

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

Итоговые рекомендации по автоматическому резервному копированию WordPress

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

Плагины, такие как UpdraftPlus или BackWPup, значительно упрощают задачу и имеют удобный интерфейс, но если нужен полный контроль — пишите кастомные решения, используя приведённые в статье примеры кода.

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

Как использовать метаданные для оптимизации WordPress
06.03.2026
Как автоматизировать управление ролями и правами в WordPress с примерами кода
17.03.2026
Проверка и устранение проблем с постоянными ссылками (Permalinks) в WordPress
15.01.2026
Автоматическое удаление неактивных пользователей WordPress
30.01.2026
Как добавить автоматическое обновление трансляции видео в WordPress
21.01.2026