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

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

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

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

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

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

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

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

UpdraftPlus — простой и мощный плагин для бэкапов

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

  • Установка через админку WordPress.
  • Настройка расписания: можно выбрать ежедневные, еженедельные или более редкие интервалы.
  • Возможность восстановить сайт прямо из панели управления.

Для настройки автоматического бэкапа после установки плагина перейдите в Настройки > UpdraftPlus, выберите расписание и подключите облачное хранилище.

BackWPup — расширенные возможности бэкапа и экспорта

BackWPup отличается гибкостью настроек и поддержкой множества форматов бэкапов. Также умеет отправлять копии на FTP, Dropbox, S3 и другие сервисы.

  • Позволяет создавать задания с детальной настройкой: какие файлы копировать, какие таблицы базы данных.
  • Имеет встроенный планировщик для автоматизации.
  • Поддерживает шифрование и сжатие архивов.

Для создания задания зайдите в BackWPup > Add new job, выберите необходимые параметры и активируйте расписание.

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

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

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

Скрипт должен:

  • Сделать дамп базы данных MySQL.
  • Архивировать файлы сайта (wp-content, wp-config.php и другие важные файлы).
  • Сохранить архив с уникальным именем, например, с датой и временем.
  • Опционально — отправить архив на удалённый сервер (FTP, SFTP) или в облако.

Пример простого PHP-скрипта для резервного копирования базы данных и файлов

<?php
// Функция для подключения к базе данных и создания дампа
function wpsetup_create_db_backup($dbhost, $dbuser, $dbpass, $dbname, $backup_dir) {
    $date = date('Y-m-d_H-i-s');
    $backup_file = $backup_dir . "/db_backup_" . $date . ".sql";
    $command = "mysqldump --host={$dbhost} --user={$dbuser} --password={$dbpass} {$dbname} > {$backup_file}";
    system($command, $output);
    return $backup_file;
}

// Функция для архивации папки wp-content
function wpsetup_create_files_backup($source_dir, $backup_dir) {
    $date = date('Y-m-d_H-i-s');
    $zip_file = $backup_dir . "/files_backup_" . $date . ".zip";

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

    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($source_dir),
        RecursiveIteratorIterator::LEAVES_ONLY
    );

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

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

// Параметры
$dbhost = 'localhost';
$dbuser = 'your_db_user';
$dbpass = 'your_db_password';
$dbname = 'your_db_name';
$backup_dir = __DIR__ . '/backups';
$source_dir = __DIR__ . '/wp-content';

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

// Создаём бэкап базы данных
$db_backup = wpsetup_create_db_backup($dbhost, $dbuser, $dbpass, $dbname, $backup_dir);

// Создаём архив файлов
$files_backup = wpsetup_create_files_backup($source_dir, $backup_dir);

if ($db_backup && $files_backup) {
    echo "Резервное копирование успешно выполнено:\n";
    echo "- База данных: {$db_backup}\n";
    echo "- Файлы: {$files_backup}\n";
} else {
    echo "Ошибка при создании резервной копии.";
}
?>

Этот скрипт создаёт SQL-дамп и ZIP-архив файлов. Его можно запускать по расписанию через cron — так достигается автоматизация.

Автоматизация запуска скрипта через cron

Чтобы настроить автоматический запуск, добавьте в cron следующее задание:

0 3 * * * /usr/bin/php /путь/к/вашему/скрипту/backup.php > /dev/null 2>&1

Эта команда будет запускать скрипт каждый день в 3 часа ночи. Логи не сохраняются (перенаправляются в /dev/null), но при необходимости можно сделать запись в файл.

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

Для дополнительной безопасности стоит хранить копии не только на сервере сайта, но и удалённо. В PHP можно использовать расширение ftp для загрузки файлов на внешний FTP-сервер.

Пример кода для отправки файла по FTP

function wpsetup_ftp_upload($ftp_server, $ftp_user, $ftp_pass, $local_file, $remote_file) {
    $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;
}

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

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

При организации резервного копирования важно учитывать несколько моментов:

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

Пример простого удаления файлов старше 30 дней в PHP:

$files = glob($backup_dir . '/*');
$now = time();
foreach ($files as $file) {
    if (is_file($file) && $now - filemtime($file) > 30 * 24 * 60 * 60) {
        unlink($file);
    }
}
Как удалить или изменить регистрацию AJAX в WordPress: практические примеры и решения
12.04.2026
Как создать автоматическую сборку и оптимизацию изображений в WordPress
02.02.2026
Как отключить системные email уведомления WordPress без плагинов
28.12.2025
Как сделать уникальный метабокс в WordPress с применением хуков
26.03.2026
Как добавить произвольные типы постов в WordPress с примерами кода
20.12.2025