Как создать автоматическое резервное копирование WordPress с помощью PHP

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

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

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

  • Восстановить сайт в случае критической ошибки или взлома.
  • Вернуться к предыдущей версии после проблем с обновлением плагинов или темы.
  • Перенести сайт на другой сервер или хостинг без потерь данных.

Несмотря на доступность готовых решений, полезно понимать, как работает процесс резервного копирования, и иметь собственный скрипт под WPBest.ru.

Основные компоненты резервного копирования WordPress

WordPress состоит из двух основных частей, которые нужно сохранять:

  • Файлы сайта: ядро WP, темы, плагины, медиафайлы.
  • База данных MySQL: все записи, настройки, контент.

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

Создание автоматического резервного копирования базы данных WordPress на PHP

Для бэкапа базы данных мы можем использовать встроенный PHP-функционал и команду mysqldump, если есть доступ к серверу. Рассмотрим пример функции wpbest_backup_database(), которая экспортирует базу в SQL-файл.

function wpbest_backup_database() {
    $db_name = DB_NAME;
    $db_user = DB_USER;
    $db_password = DB_PASSWORD;
    $db_host = DB_HOST;
    $backup_dir = WP_CONTENT_DIR . '/backups';
    if (!file_exists($backup_dir)) {
        mkdir($backup_dir, 0755, true);
    }
    $filename = $backup_dir . '/db-backup-' . date('Y-m-d-H-i-s') . '.sql';

    $command = "mysqldump --user={$db_user} --password={$db_password} --host={$db_host} {$db_name} > {$filename}";
    exec($command, $output, $return_var);

    if ($return_var === 0) {
        return $filename;
    } else {
        return false;
    }
}

В этом коде мы создаём папку wp-content/backups (если её нет), и сохраняем дамп базы с текущей датой. Команда mysqldump должна быть доступна на сервере. Если нет, можно использовать PHP-библиотеки для экспорта базы.

Обработка ошибок и уведомления

Важно проверять результат и уведомлять админа о создании бэкапа. Например:

function wpbest_send_backup_notification($file) {
    $admin_email = get_option('admin_email');
    $subject = 'Резервная копия базы WordPress создана';
    $message = 'Новый бэкап базы данных WordPress сохранён: ' . $file;
    wp_mail($admin_email, $subject, $message);
}

Вызывайте эту функцию после успешного создания дампа.

Создание резервной копии файлов WordPress

Чтобы сохранить файлы сайта, можно создать архив ZIP с помощью PHP. Рассмотрим пример функции wpbest_backup_files():

function wpbest_backup_files() {
    $root_dir = ABSPATH;
    $backup_dir = WP_CONTENT_DIR . '/backups';
    if (!file_exists($backup_dir)) {
        mkdir($backup_dir, 0755, true);
    }
    $zip_name = $backup_dir . '/files-backup-' . date('Y-m-d-H-i-s') . '.zip';

    $zip = new ZipArchive();
    if ($zip->open($zip_name, ZipArchive::CREATE) !== true) {
        return false;
    }

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

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

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

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

Автоматизация запуска бэкапов с помощью WP-Cron

Чтобы бэкапы создавались автоматически, подключим наш код к WP-Cron — системе планировщика задач WordPress.

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

function wpbest_run_backup() {
    $db_file = wpbest_backup_database();
    $files_file = wpbest_backup_files();
    if ($db_file) wpbest_send_backup_notification($db_file);
    if ($files_file) wpbest_send_backup_notification($files_file);
}
add_action('wpbest_daily_backup_event', 'wpbest_run_backup');

Этот код запускает резервное копирование один раз в сутки и отправляет уведомления админу.

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

Если вы не хотите писать свои скрипты, можно использовать готовые плагины. Вот несколько проверенных вариантов:

  • UpdraftPlus: позволяет создавать резервные копии базы и файлов, сохранять их в облаке (Google Drive, Dropbox и др.), восстанавливать одним кликом.
  • BackWPup: бесплатный плагин с множеством опций, включая автоматизацию и архивирование.
  • WPBest Clearfy: хотя это плагин для оптимизации, в Pro-версии есть инструменты для управления безопасностью и бэкапами.

Все эти плагины можно скачать с WPShop.ru.

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

Резервные копии — это чувствительные данные, их нужно хранить в безопасном месте:

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

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

Заключение

Создание автоматического резервного копирования WordPress своими силами — это не только полезный опыт, но и гарантия безопасности сайта. Используя простые PHP-скрипты и WP-Cron, можно настроить регулярные бэкапы базы данных и файлов. Для удобства и расширенных возможностей можно использовать проверенные плагины, доступные на WPShop.ru.

Как создать автоматическое резервное копирование WordPress с помощью PHP
01.02.2026
Как удалить неиспользуемые типы записей в WordPress
29.12.2025
Как удалить метаданные из медиа файлов WordPress для защиты конфиденциальности
22.02.2026
Как массово удалить загруженные медиа в WordPress по датам и типам файлов
08.02.2026
Как удалить или заблокировать контент по IP в WordPress
14.03.2026