Как настроить автоматическое создание резервных копий в WordPress с WPReset

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

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

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

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

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

Настройка автоматического резервного копирования с помощью WPReset

Установка и базовая настройка WPReset

Для начала установите плагин WPReset с официального репозитория WordPress или скачайте с wpshop.ru. Активируйте плагин и перейдите в его настройки.

WPReset позволяет создавать снимки (snapshots) базы данных и файлов вручную. Чтобы автоматизировать процесс, потребуется задействовать WP-Cron или системный cron с кастомным кодом.

Создание snapshots с помощью кода и WP-Cron

Добавьте в файл functions.php вашей темы или в отдельный плагин следующий код, который запустит автоматическое создание снимка раз в сутки:

function wpresetru_create_snapshot() {
    if ( ! class_exists( 'WPReset\Core' ) ) {
        return;
    }
    $wpreset = new WPReset\Core();
    $snapshot_id = $wpreset->snapshots->create_snapshot( 'Автоматический снимок по расписанию' );
}

function wpresetru_schedule_snapshot() {
    if ( ! wp_next_scheduled( 'wpresetru_daily_snapshot' ) ) {
        wp_schedule_event( time(), 'daily', 'wpresetru_daily_snapshot' );
    }
}

add_action( 'wpresetru_daily_snapshot', 'wpresetru_create_snapshot' );
add_action( 'wp', 'wpresetru_schedule_snapshot' );

Этот код проверяет, активен ли WPReset, и создаёт снимок с названием «Автоматический снимок по расписанию» каждый день. Запуск происходит через стандартный WP-Cron, который срабатывает при посещении сайта.

Использование системного cron для более надежной работы

WP-Cron зависит от посещений сайта, поэтому лучше настроить системный cron на сервере для вызова wp-cron.php регулярно.

Добавьте в crontab команду:

wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Это обеспечит точное выполнение заданий WP-Cron, включая создание снимков.

Настройка хранения и очистки резервных копий

По умолчанию WPReset хранит snapshots в базе данных и в папке плагина. Чтобы не переполнять хранилище, настройте регулярную очистку старых копий.

Добавьте функцию для удаления снимков старше определённого количества дней:

function wpresetru_cleanup_old_snapshots() {
    if ( ! class_exists( 'WPReset\Core' ) ) {
        return;
    }
    $wpreset = new WPReset\Core();
    $snapshots = $wpreset->snapshots->get_snapshots();
    $now = time();
    $days_limit = 7; // Хранить не более 7 дней

    foreach ( $snapshots as $snapshot ) {
        $snapshot_time = strtotime( $snapshot['created'] );
        if ( ( $now - $snapshot_time ) > $days_limit * DAY_IN_SECONDS ) {
            $wpreset->snapshots->delete_snapshot( $snapshot['id'] );
        }
    }
}

add_action( 'wpresetru_daily_snapshot', 'wpresetru_cleanup_old_snapshots' );

Эта функция удалит все снимки старше недели при запуске ежедневного задания.

Автоматическое резервное копирование файлов сайта

WPReset не копирует файлы сайта (плагины, темы, uploads) в snapshots. Для этого можно использовать дополнительные плагины или написать собственный скрипт.

Пример простого решения для копирования папки uploads раз в день через WP-Cron:

function wpresetru_backup_uploads() {
    $upload_dir = wp_upload_dir();
    $source = $upload_dir['basedir'];
    $backup_dir = WP_CONTENT_DIR . '/uploads-backup-' . date('Y-m-d');

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

    // Рекурсивное копирование файлов
    wpresetru_recurse_copy( $source, $backup_dir );
}

function wpresetru_recurse_copy( $src, $dst ) {
    $dir = opendir( $src );
    @mkdir( $dst );
    while ( false !== ( $file = readdir( $dir ) ) ) {
        if ( ( $file != '.' ) && ( $file != '..' ) ) {
            if ( is_dir( $src . '/' . $file ) ) {
                wpresetru_recurse_copy( $src . '/' . $file, $dst . '/' . $file );
            } else {
                copy( $src . '/' . $file, $dst . '/' . $file );
            }
        }
    }
    closedir( $dir );
}

add_action( 'wpresetru_daily_snapshot', 'wpresetru_backup_uploads' );

Этот код создаст копию папки uploads с датой в названии. Для надежности рекомендуем настроить удаление старых резервных копий вручную или с помощью скриптов.

Интеграция с другими плагинами для резервного копирования

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

Для интеграции воспользуйтесь их настройками или вызовите создание резервных копий через WP-Cron по расписанию.

Выводы и рекомендации

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

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

Как изменить структуру ссылок в WordPress без потери SEO
17.12.2025
Как установить и настроить WooCommerce для массового экспорта и импорта товаров
31.05.2026
Как решить проблему замедленного запроса к базе данных в WordPress
05.12.2025
Автоматическое удаление неактивных пользователей в WordPress: настройка и примеры кода
29.04.2026
Оптимизация базы данных WordPress при больших объемах данных
13.12.2025