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

|

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

Зачем нужна автоматизация резервного копирования WordPress

Резервное копирование вручную — процесс трудоёмкий и часто забываемый. Автоматизация позволяет:

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

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

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

UpdraftPlus — полный набор функций

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

Особенности:

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

BackWPup — удобный бесплатный вариант

BackWPup позволяет создавать полные копии сайта и отправлять их на FTP, Dropbox, S3 и другие сервисы. Имеет понятный интерфейс и гибкие настройки.

Особенности:

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

Создание собственного решения для автоматического бэкапа WordPress с помощью кода

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

Использование WP-Cron для автоматизации задач

WordPress имеет встроенную систему планировщика задач — WP-Cron. С её помощью можно запускать пользовательские функции автоматически.

Пример регистрации крон-задачи:

function wporg_register_backup_cron() {
    if ( ! wp_next_scheduled( 'wporg_backup_event' ) ) {
        wp_schedule_event( time(), 'daily', 'wporg_backup_event' );
    }
}
add_action( 'wp', 'wporg_register_backup_cron' );

Данный код ставит задачу на ежедневный запуск хука wporg_backup_event.

Функция создания резервной копии базы и файлов

Для создания резервной копии базы данных можно использовать стандартные функции WordPress или напрямую работать с MySQL. Для копирования файлов — использовать PHP-функции архивирования.

Пример простой функции для создания архива базы данных и wp-content:

function wporg_create_backup() {
    global $wpdb;
    $backup_dir = WP_CONTENT_DIR . '/backups';
    if ( ! file_exists( $backup_dir ) ) {
        mkdir( $backup_dir, 0755, true );
    }

    $date = date( 'Y-m-d-H-i-s' );
    $backup_file = $backup_dir . '/backup-' . $date . '.zip';

    // Экспорт базы данных
    $db_file = $backup_dir . '/db-' . $date . '.sql';
    $command = 'mysqldump --user=' . DB_USER . ' --password=' . DB_PASSWORD . ' --host=' . DB_HOST . ' ' . DB_NAME . ' > ' . $db_file;
    exec( $command );

    // Создаем zip архив
    $zip = new ZipArchive();
    if ( $zip->open( $backup_file, ZipArchive::CREATE ) === true ) {
        // Добавляем базу
        $zip->addFile( $db_file, basename( $db_file ) );
        // Добавляем папку wp-content
        $files = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator( WP_CONTENT_DIR ),
            RecursiveIteratorIterator::LEAVES_ONLY
        );
        foreach ( $files as $name => $file ) {
            if ( ! $file->isDir() ) {
                $filePath = $file->getRealPath();
                $relativePath = substr( $filePath, strlen( WP_CONTENT_DIR ) + 1 );
                $zip->addFile( $filePath, 'wp-content/' . $relativePath );
            }
        }
        $zip->close();
    }
    // Удаляем временный файл базы
    unlink( $db_file );
}
add_action( 'wporg_backup_event', 'wporg_create_backup' );

Важно: команда mysqldump должна быть доступна на сервере, а PHP-скрипту разрешено выполнять exec.

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

Для безопасности стоит не только создавать копии локально, но и отправлять их на удалённые хранилища. Например, на FTP-сервер, Amazon S3 или Google Drive.

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

function wporg_send_to_ftp( $file_path ) {
    $ftp_server = 'ftp.example.com';
    $ftp_user = 'username';
    $ftp_pass = 'password';

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

    if ( !$conn_id || !$login_result ) {
        error_log('FTP connection failed');
        return false;
    }

    ftp_pasv( $conn_id, true );

    $remote_file = basename( $file_path );
    if ( ftp_put( $conn_id, $remote_file, $file_path, FTP_BINARY ) ) {
        ftp_close( $conn_id );
        return true;
    } else {
        ftp_close( $conn_id );
        error_log('FTP upload failed');
        return false;
    }
}

Данный код можно вызвать в конце функции создания резервной копии.

Рекомендации по безопасности и хранению резервных копий

Храните бэкапы в безопасных местах, не на том же сервере, где размещён сайт. Желательно использовать зашифрованные архивы и защищённые паролями хранилища.

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

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

Итоги

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

Как установить ограничения на регистрацию в WordPress: практическое руководство с примерами
24.12.2025
Как удалить метаданные и оптимизировать базу данных WordPress: практические решения
21.12.2025
Как сделать автоматическое резервное копирование WordPress с помощью кода
05.04.2026
Как использовать WP-Cron для автоматического удаления старых записей в WordPress
23.04.2026
Запрет регистрации по доменам email в WordPress с подробным руководством
28.02.2026
×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »