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

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

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

Многие администраторы сайтов делают резервные копии вручную, что не всегда удобно и надежно. Автоматизация позволяет:

  • Создавать копии по расписанию без вашего участия.
  • Хранить бэкапы в удаленных местах — на облачных сервисах, FTP или других серверах.
  • Автоматически удалять старые копии, чтобы не занимать место.
  • Интегрировать процесс с уведомлениями, чтобы знать о статусе резервного копирования.

Все это значительно снижает риски и экономит время.

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

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

1. UpdraftPlus

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

  • Можно задать расписание для файлов и базы данных.
  • Поддерживает автоматическое удаление старых копий.
  • Есть бесплатная и платная версия с дополнительными функциями.

Настройка сводится к выбору расписания и места хранения копий.

2. BackWPup

Еще один популярный плагин с широкими возможностями:

  • Резервное копирование базы данных, файлов, плагинов, тем.
  • Экспорт в архив ZIP, TAR или TAR.GZ.
  • Отправка бэкапов на Dropbox, FTP, Amazon S3, Microsoft Azure и др.
  • Планировщик задач встроенный.

3. WP Time Capsule

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

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

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

function wptour_create_backup() {
    $upload_dir = wp_upload_dir();
    $backup_dir = $upload_dir['basedir'] . '/wptour_backups';

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

    $date = date('Y-m-d_H-i-s');
    $zip_file = $backup_dir . "/backup-{$date}.zip";

    $zip = new ZipArchive();
    if ( $zip->open( $zip_file, ZipArchive::CREATE ) === TRUE ) {
        // Добавляем файлы сайта
        $dir = ABSPATH;
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));

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

        // Экспорт базы данных
        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 .= "DROP TABLE IF EXISTS `{$table_name}`;\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(array($wpdb, 'escape'), array_values($row));
                $values = implode("','", $values);
                $sql_dump .= "INSERT INTO `{$table_name}` VALUES ('{$values}');\n";
            }
            $sql_dump .= "\n\n";
        }

        $zip->addFromString('database_backup.sql', $sql_dump);
        $zip->close();
    }
}

// Запуск функции по расписанию через WP Cron
if ( ! wp_next_scheduled( 'wptour_daily_backup' ) ) {
    wp_schedule_event( time(), 'daily', 'wptour_daily_backup' );
}
add_action( 'wptour_daily_backup', 'wptour_create_backup' );

Этот код создаёт ZIP-архив с файлами сайта и дампом базы данных, сохраняет его в директорию загрузок и запускается ежедневно через WP Cron. Конечно, для больших сайтов стоит доработать фильтры файлов и оптимизировать экспорт базы.

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

Хранение резервных копий только на том же сервере — рискованно. Лучше использовать удалённые хранилища:

  • Google Drive и Dropbox — удобны для интеграции с плагинами и обеспечивают быстрый доступ.
  • Amazon S3 и DigitalOcean Spaces — подходят для профессиональных проектов с большими объемами данных.
  • Удалённый FTP или SFTP сервер — классический вариант, если у вас есть доступ к отдельному серверу.

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

Пример загрузки файла на Google Drive с помощью Google API PHP Client

Для интеграции с Google Drive потребуется настроить OAuth 2.0 и скачать клиентские библиотеки. Ниже пример загрузки файла:

function wptour_upload_to_gdrive($file_path) {
    require_once 'vendor/autoload.php';

    $client = new Google_Client();
    $client->setAuthConfig('credentials.json');
    $client->addScope(Google_Service_Drive::DRIVE_FILE);

    $service = new Google_Service_Drive($client);

    $file = new Google_Service_Drive_DriveFile();
    $file->setName(basename($file_path));

    $content = file_get_contents($file_path);

    $service->files->create($file, [
        'data' => $content,
        'mimeType' => 'application/zip',
        'uploadType' => 'multipart'
    ]);
}

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

Советы по управлению резервными копиями и безопасности

Ниже несколько рекомендаций, которые помогут сделать процесс резервного копирования надежным:

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

Автоматизация и правильное хранение резервных копий — залог стабильности вашего сайта.

WooCommerce: как избежать ошибок при массовом импорте продуктов
18.05.2026
Как создать многоязычный сайт на WordPress с помощью Polylang
14.01.2026
WooCommerce: как добавить дополнительные поля в форму оплаты без плагинов
26.05.2026
Как использовать WPCommunity для создания форума в WordPress
21.12.2025
Как автоматизировать удаление спам-комментариев в WordPress
07.04.2026

Уроки со скриншотами, подробные руководства