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

Зачем нужен автоматический бэкап сайта WordPress

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

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

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

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

Первый шаг — сохранить базу данных сайта. WordPress использует MySQL (или MariaDB), и для бэкапа базы мы можем использовать команду mysqldump. Но если у вас нет доступа к консоли, можно сделать экспорт через PHP.

Ниже пример функции cyrtolat_create_db_backup(), которая экспортирует базу данных в SQL-файл:

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

    // Формируем команду mysqldump
    $command = "mysqldump --host={$db_host} --user={$db_user} --password={$db_password} {$db_name} > {$filepath}";

    // Выполняем команду
    system($command, $retval);

    if ($retval === 0) {
        return $filepath;
    } else {
        return false;
    }
}

Этот код создаст папку wp-content/backups (если ее нет) и сохранит туда дамп базы. Обратите внимание, что для использования mysqldump на сервере должен быть доступ к консоли и разрешены вызовы system() или аналогичных функций.

Если вызов mysqldump недоступен, можно сделать экспорт базы средствами PHP, перебирая таблицы и формируя SQL вручную — но это сложнее и менее эффективно.

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

Кроме базы, нужно сохранять и файлы сайта: темы, плагины, загрузки и сам WordPress. Сделать это можно с помощью архивации каталога wp-content — в нем содержится вся уникальная информация сайта.

Пример функции cyrtolat_create_files_backup(), которая архивирует папку wp-content в ZIP-архив:

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

    $zip = new ZipArchive();
    if ($zip->open($filepath, ZipArchive::CREATE) === TRUE) {
        $files = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator($upload_dir),
            RecursiveIteratorIterator::LEAVES_ONLY
        );
        foreach ($files as $name => $file) {
            if (!$file->isDir()) {
                $filePath = $file->getRealPath();
                $relativePath = substr($filePath, strlen($upload_dir) + 1);
                $zip->addFile($filePath, $relativePath);
            }
        }
        $zip->close();
        return $filepath;
    } else {
        return false;
    }
}

Эта функция создаст ZIP-архив с текущим временем в имени и положит его в папку бэкапов.

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

Автоматизация бэкапа с помощью cron

Чтобы бэкапы создавались автоматически, нужно настроить системный планировщик задач — cron (на Linux-серверах) или Task Scheduler (Windows). Я расскажу про cron, так как это самый распространенный вариант.

Создайте отдельный PHP-скрипт в корне сайта, например wp-backup.php, с таким содержимым:

<?php
require_once 'wp-load.php';

$db_backup = cyrtolat_create_db_backup();
$files_backup = cyrtolat_create_files_backup();

if ($db_backup && $files_backup) {
    echo 'Backup successful: ' . $db_backup . ', ' . $files_backup;
} else {
    echo 'Backup failed';
}
?>

Далее добавьте строку в cron, чтобы запускать бэкап, например, каждый день в 3 часа ночи:

0 3 * * * /usr/bin/php /path/to/your/site/wp-backup.php

Путь к PHP и скрипту замените на реальные пути вашего сервера. Cron будет запускать скрипт, и бэкапы будут появляться в папке wp-content/backups.

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

Не храните бэкапы на том же сервере, где находится сайт, особенно в общедоступных папках. Лучше настроить автоматическую загрузку бэкапов на удаленный сервер, FTP, облако (Google Drive, Dropbox) или отправку на email.

Пример простой отправки бэкапа на email после создания (только для небольших файлов):

function cyrtolat_send_backup_email($filepath) {
    $to = 'your-email@example.com';
    $subject = 'WordPress Backup ' . date('Y-m-d H:i:s');
    $message = 'Вложен файл резервной копии.';
    $headers = [];

    $file_content = file_get_contents($filepath);
    $file_encoded = chunk_split(base64_encode($file_content));
    $boundary = md5(time());

    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-Type: multipart/mixed; boundary="' . $boundary . '"';

    $body = "--$boundary\r\n";
    $body .= "Content-Type: text/plain; charset=utf-8\r\n\r\n";
    $body .= $message . "\r\n";
    $body .= "--$boundary\r\n";
    $body .= "Content-Type: application/octet-stream; name=\"" . basename($filepath) . "\"\r\n";
    $body .= "Content-Transfer-Encoding: base64\r\n";
    $body .= "Content-Disposition: attachment; filename=\"" . basename($filepath) . "\"\r\n\r\n";
    $body .= $file_encoded . "\r\n";
    $body .= "--$boundary--";

    wp_mail($to, $subject, $body, $headers);
}

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

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

Создание автоматического бэкапа WordPress без плагинов — задача вполне решаемая с помощью PHP и cron. Такой подход минимизирует нагрузку на сайт и дает полный контроль над процессом. Главное — обеспечить безопасность бэкапов: хранить их вне публичных папок и по возможности дублировать на удаленное хранилище.

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как удалить пустое содержимое из текста постов WordPress: практическое решение
29.01.2026
Как добавить обратный отчет после отправки формы в WordPress
30.12.2025
Автоматическое отключение плагинов в WordPress по расписанию: практическое руководство
26.12.2025
WooCommerce: автоматическое изменение цены товара при обновлении заказа
25.04.2026
WooCommerce: автоматическое исключение товаров без остатка из каталога
07.06.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее