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

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

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

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

Основные объекты для бэкапа: база данных MySQL и файлы WordPress (темы, плагины, медиафайлы).

В идеале стоит хранить копии на удалённом сервере или в облачном хранилище, чтобы избежать потери данных при проблемах с основным сервером.

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

UpdraftPlus

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

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

  • Установите и активируйте плагин через админку WordPress.
  • Перейдите в Настройки > UpdraftPlus Backup.
  • Настройте расписание резервного копирования (например, ежедневно для базы и еженедельно для файлов).
  • Выберите удалённое хранилище и подключите его.
  • Сохраните настройки и запустите тестовое резервное копирование.

BackWPup

Ещё один мощный плагин, позволяющий делать полный бэкап сайта с возможностью выгрузки в Dropbox, FTP, Amazon S3 и другие сервисы.

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

WP Time Capsule

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

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

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

Резервное копирование базы данных

Пример функции для экспорта базы данных MySQL:

function wpdemo_backup_database() {
    global $wpdb;
    $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($value) use ($wpdb) {
                return is_null($value) ? 'NULL' : $wpdb->prepare('%s', $value);
            }, array_values($row));
            $sql_dump .= "INSERT INTO {$table_name} VALUES(" . implode(',', $values) . ");\n";
        }
        $sql_dump .= "\n";
    }

    $backup_file = WP_CONTENT_DIR . '/backups/db_backup_' . date('Y-m-d_H-i-s') . '.sql';
    file_put_contents($backup_file, $sql_dump);
    return $backup_file;
}

Этот код создаст SQL дамп всей базы и сохранит его в папку wp-content/backups. Не забудьте создать эту папку и дать права на запись.

Архивирование файлов сайта

Для создания архива с файлами темы, плагинов и медиа можно использовать встроенный класс ZipArchive:

function wpdemo_backup_files($source_dir) {
    $zip = new ZipArchive();
    $backup_file = WP_CONTENT_DIR . '/backups/files_backup_' . date('Y-m-d_H-i-s') . '.zip';

    if ($zip->open($backup_file, ZipArchive::CREATE) !== TRUE) {
        return false;
    }

    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source_dir));

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

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

Пример вызова для бэкапа папки с темами:

$backup_files = wpdemo_backup_files(WP_CONTENT_DIR . '/themes');
if ($backup_files) {
    echo 'Файлы успешно заархивированы: ' . $backup_files;
} else {
    echo 'Ошибка при создании архива';
}

Автоматизация запуска резервного копирования через WP-Cron

Чтобы резервное копирование происходило автоматически, зарегистрируем свою задачу в WP-Cron.

add_action('wpdemo_daily_backup_event', 'wpdemo_daily_backup_function');

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

function wpdemo_deactivate_backup_cron() {
    $timestamp = wp_next_scheduled('wpdemo_daily_backup_event');
    wp_unschedule_event($timestamp, 'wpdemo_daily_backup_event');
}
register_deactivation_hook(__FILE__, 'wpdemo_deactivate_backup_cron');

function wpdemo_daily_backup_function() {
    $db_backup = wpdemo_backup_database();
    $files_backup = wpdemo_backup_files(WP_CONTENT_DIR);
    // Можно добавить логику отправки файлов на удалённый сервер или облако
}

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

Отправка резервных копий на удалённое хранилище

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

Для автоматизации можно использовать плагин UpdraftPlus с настройкой удалённого хранилища, либо интегрировать API Google Drive, Dropbox и других сервисов в свою функцию.

Пример отправки файла на FTP с помощью PHP:

function wpdemo_ftp_upload($local_file, $remote_file) {
    $ftp_server = 'ftp.example.com';
    $ftp_user = 'username';
    $ftp_pass = 'password';

    $conn_id = ftp_connect($ftp_server);
    if (!$conn_id) return false;

    $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
    if (!$login_result) {
        ftp_close($conn_id);
        return false;
    }

    ftp_pasv($conn_id, true);
    $upload = ftp_put($conn_id, $remote_file, $local_file, FTP_BINARY);
    ftp_close($conn_id);
    return $upload;
}

Добавьте вызов этой функции после создания резервной копии для выгрузки её на удалённый сервер.

Практические рекомендации по настройке резервного копирования

  • Храните резервные копии минимум за 7-14 дней, чтобы иметь возможность откатиться на нужную дату.
  • Регулярно проверяйте целостность и возможность восстановления из резервных копий.
  • Используйте разные места хранения (локальный сервер + облако/FTP).
  • Автоматизируйте процессы, чтобы минимизировать человеческий фактор.
  • Следите за размером копий и очищайте устаревшие файлы.

Заключение

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

Как автоматизировать очистку кеша в WordPress
16.03.2026
Как создать проверку валидации формы на AJAX в WordPress с примерами кода
23.02.2026
Как добавить автоматическое сохранение в формы WordPress для защиты данных
20.01.2026
Как удалить все мета данные из постов WordPress
05.12.2025
Как использовать WPCommunity для создания форума на WordPress
27.02.2026