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

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

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

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

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

Какие данные необходимо резервировать

Для полноценного восстановления сайта потребуется:

  • Папка с файлами WordPress — wp-content (темы, плагины, загрузки) и остальные системные файлы.
  • Экспорт базы данных MySQL, в которой хранятся посты, страницы, настройки плагинов и прочее.

Обычно для резервного копирования достаточно сохранить wp-content и дамп базы данных, остальные файлы можно восстановить из дистрибутива WordPress.

Шаг 1. Создание скрипта резервного копирования

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

<?php
// Настройки подключения к базе данных
$dbHost = 'localhost';
$dbUser = 'wp_user';
$dbPass = 'password';
$dbName = 'wordpress';

// Пути
$wpContentDir = __DIR__ . '/wp-content';
$backupDir = __DIR__ . '/backups';
if(!is_dir($backupDir)) {
    mkdir($backupDir, 0755, true);
}

$date = date('Y-m-d_H-i-s');

// Создаем архив папки wp-content
$zipFile = "$backupDir/wp-content-$date.zip";
$zip = new ZipArchive();
if($zip->open($zipFile, ZipArchive::CREATE) !== true) {
    die('Не удалось создать zip архив');
}

$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($wpContentDir));
foreach ($files as $file) {
    if (!$file->isDir()) {
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($wpContentDir) + 1);
        $zip->addFile($filePath, $relativePath);
    }
}
$zip->close();

// Создаем дамп базы данных
$sqlFile = "$backupDir/db-$date.sql";
$command = "mysqldump -h $dbHost -u $dbUser -p$dbPass $dbName > $sqlFile";
exec($command, $output, $return_var);
if($return_var !== 0) {
    die('Ошибка при создании дампа базы данных');
}

// Логирование
file_put_contents("$backupDir/backup.log", "$date: Backup completed\n", FILE_APPEND);

echo 'Бэкап успешно создан: ' . $zipFile . ' и ' . $sqlFile;
?>

Обратите внимание, что для выполнения команды mysqldump у пользователя, под которым запускается PHP, должны быть соответствующие права. Также можно запускать скрипт из командной строки для избежания ограничений веб-сервера.

Объяснение кода

Скрипт создает архив ZIP из папки wp-content, что экономит место и сохраняет важные файлы. Далее он экспортирует базу данных с помощью mysqldump. Все резервные копии помещаются в папку backups с отметкой времени. Такой подход упрощает хранение и поиск нужной копии.

Шаг 2. Настройка cron для автоматизации задач

Чтобы бэкапы выполнялись автоматически, настроим задачу cron на сервере Linux. Добавьте в crontab запись:

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

Эта команда будет запускать скрипт ежедневно в 3 часа ночи. Вы можете изменить время и частоту по своему усмотрению.

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

Шаг 3. Хранение и очистка старых резервных копий

Со временем папка с бэкапами может разрастаться. Рекомендуется добавить в скрипт удаление копий старше определённого времени, например 30 дней.

function wpblog_cleanupBackups($backupDir, $days = 30) {
    $files = glob($backupDir . '/*');
    $now = time();
    foreach ($files as $file) {
        if (is_file($file)) {
            if ($now - filemtime($file) > 60 * 60 * 24 * $days) {
                unlink($file);
            }
        }
    }
}

// Вызов функции в основном скрипте
wpblog_cleanupBackups($backupDir, 30);

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

Дополнительные советы и рекомендации по безопасности

При создании резервных копий важно учитывать безопасность:

  • Папка с бэкапами не должна быть доступна извне через браузер. Защитите её с помощью .htaccess или настройками сервера.
  • Пароль от базы данных храните в отдельном конфигурационном файле с ограниченными правами чтения.
  • Регулярно проверяйте целостность и работоспособность резервных копий, восстанавливая тестовый сайт.
  • При возможности отправляйте копии на удалённые хранилища (FTP, облако) для дополнительной защиты.

Заключение

Автоматические бэкапы WordPress без плагинов — отличный способ обеспечить безопасность сайта, снизить нагрузку и повысить контроль над процессом. Используя простой PHP-скрипт, cron и стандартные инструменты MySQL, вы получите надежное и гибкое решение.

Если хотите, можете дополнить скрипт функционалом отправки бэкапов на удалённый сервер или email, что сделает вашу систему ещё более надежной.

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

⭐⭐⭐⭐⭐
Как создать автоматический импорт постов из внешнего источника с фильтрами в WordPress
15.04.2026
Как удалить старые ревизии записей в WordPress для оптимизации базы данных
14.01.2026
WooCommerce: как правильно удалять товары с очисткой связанных данных
03.05.2026
Как удалить удалённые комментарии из базы данных WordPress
05.12.2025
Как создать уникальный фильтрованный список постов WordPress с пагинацией
23.03.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее