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

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

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

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

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

Настройка скрипта для бекапа базы данных и файлов WordPress

Бекап базы данных через PHP

Самый важный элемент — база данных, где хранятся все записи, настройки и контент. Вот пример простого PHP-скрипта для экспорта базы данных:

<?php
// wphelper_backup_db.php

// Данные для подключения к базе из wp-config.php
$db_host = 'localhost';
$db_name = 'wp_database';
$db_user = 'wp_user';
$db_pass = 'wp_password';

// Имя файла с датой
$backup_file = __DIR__ . '/backups/db_backup_' . date('Y-m-d_H-i-s') . '.sql';

// Команда mysqldump (нужно, чтобы на сервере была утилита)
$command = "mysqldump --user={$db_user} --password={$db_pass} --host={$db_host} {$db_name} > {$backup_file}";

exec($command, $output, $return_var);

if ($return_var === 0) {
    echo "Резервная копия базы данных успешно создана: {$backup_file}";
} else {
    echo "Ошибка создания резервной копии базы данных.";
}
?>

Обратите внимание, что для этого скрипта на сервере должна быть доступна команда mysqldump. Если доступа нет, ниже приведём альтернативный способ через WP-CLI.

Бекап файлов WordPress с помощью PHP

Файлы сайта — темы, плагины, медиа — тоже нужно сохранять. Для этого можно создать архив папки wp-content и других важных директорий:

<?php
// wphelper_backup_files.php
$source = __DIR__ . '/wp-content';
$zip_file = __DIR__ . '/backups/wp-content_backup_' . date('Y-m-d_H-i-s') . '.zip';

$zip = new ZipArchive();
if ($zip->open($zip_file, ZipArchive::CREATE) === TRUE) {
    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($source),
        RecursiveIteratorIterator::LEAVES_ONLY
    );

    foreach ($files as $name => $file) {
        if (!$file->isDir()) {
            $filePath = $file->getRealPath();
            $relativePath = substr($filePath, strlen($source) + 1);
            $zip->addFile($filePath, $relativePath);
        }
    }
    $zip->close();
    echo "Архив wp-content создан: {$zip_file}";
} else {
    echo "Ошибка создания архива.";
}
?>

Такой архив можно расширить, добавив каталоги wp-includes или корень сайта, исключая wp-config.php и другие чувствительные файлы, если нужно.

Автоматизация через cron на сервере

Чтобы бекапы создавались автоматически, достаточно добавить задания в планировщик cron, который есть почти на всех Linux-хостингах.

Пример записи в crontab для ежедневного запуска скриптов в 3:00 утра:

0 3 * * * /usr/bin/php /путь/к/вашему/сайту/wphelper_backup_db.php
0 3 * * * /usr/bin/php /путь/к/вашему/сайту/wphelper_backup_files.php

Путь к PHP и скриптам нужно заменить на реальные из вашей среды. После настройки cron резервные копии будут появляться в папке backups автоматически.

Использование WP-CLI для резервного копирования базы данных

Если на сервере установлен WP-CLI, это удобный инструмент для работы с WordPress из командной строки. Создать дамп базы можно так:

wp db export /путь/к/вашему/сайту/backups/db_backup_$(date +'%Y-%m-%d_%H-%M-%S').sql --add-drop-table

Это проще и надёжнее, чем mysqldump, поскольку использует настройки из wp-config.php и совместим с мультисайтами.

Можно написать bash-скрипт, который запускает WP-CLI экспорт и архивирование файлов, и добавить его в cron.

Пример комплексного bash-скрипта для автоматического бекапа

#!/bin/bash

BACKUP_DIR="/путь/к/вашему/сайту/backups"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

# Бекап базы
wp db export "$BACKUP_DIR/db_backup_$DATE.sql" --add-drop-table

# Архив wp-content
zip -r "$BACKUP_DIR/wp-content_backup_$DATE.zip" wp-content

# Удаление бекапов старше 14 дней
find "$BACKUP_DIR" -type f -mtime +14 -exec rm {} \;

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

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

Резервные копии — это конфиденциальные данные, в них содержатся пароли, настройки и полный контент сайта. Обязательно:

  • Храните бекапы в отдельной папке с правильными правами доступа (например, chmod 700).
  • Сохраняйте копии за пределами корня сайта, чтобы их нельзя было скачать через браузер.
  • Регулярно копируйте резервные копии на удалённые сервисы (FTP, облако, Google Drive, Amazon S3).
  • Периодически проверяйте целостность и возможность восстановления из резервных копий.

Для автоматической отправки копий в облако можно использовать скрипты с утилитами rclone или aws cli, что значительно повысит надёжность хранения.

Заключение

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

Если хотите расширить функционал, обратите внимание на плагины из каталога WPSHOP, которые могут помочь с управлением бекапами и оптимизацией.

Как отключить системные чтения WooCommerce для повышения производительности
06.05.2026
Как избежать проблем при установке PHP 8 в WordPress
02.01.2026
Как удалить или изменить метаданные для картинок в WordPress
27.03.2026
Как удалить неиспользуемые meta-поля в WordPress для оптимизации базы данных
22.02.2026
WooCommerce: автоматическое отключение регистрации при перегрузке сайта
07.06.2026