Резервное копирование сайта — одна из важнейших задач для любого вебмастера. Особенно если это WordPress, где данные и настройки постоянно меняются. В этой статье разберём, как создать автоматические резервные копии WordPress с помощью проверенных плагинов и собственных скриптов. Это поможет избежать потери данных при сбоях, взломах или ошибках обновления.
Зачем нужны автоматические резервные копии WordPress
Ручное создание бэкапов — хороший навык, но далеко не всегда удобный и регулярный. Автоматизация процесса гарантирует, что backups создаются по расписанию без вашего участия. Это:
- Защита от потери данных — вы всегда сможете восстановить сайт;
- Экономия времени — не нужно каждый раз заходить в панель и делать резерв;
- Снижение риска человеческой ошибки — забыть создать копию просто невозможно;
- Возможность быстрого восстановления после взлома или сбоя.
Идеально, если процесс бэкапа покрывает базу данных и файлы сайта, включая темы, плагины и медиа.
Лучшие плагины для автоматического резервного копирования WordPress
Перейдём к практике. На рынке много решений, но мы рассмотрим три популярных и надёжных плагина с автоматическим режимом.
1. UpdraftPlus
UpdraftPlus — один из самых популярных бесплатных плагинов для резервного копирования. Позволяет создавать полные и инкрементальные копии, сохранять их на облачных хранилищах (Google Drive, Dropbox, Amazon S3 и др.) и восстанавливать прямо из панели администратора.
Как настроить автоматический бэкап:
- Установите и активируйте UpdraftPlus.
- В разделе Настройки > UpdraftPlus Backups выберите расписание для файлов и базы данных, например, еженедельно или ежедневно.
- Выберите удалённое хранилище для сохранения бэкапов.
- Сохраните настройки. Плагин будет самостоятельно создавать копии.
2. BackWPup
BackWPup — бесплатный плагин с широкими возможностями. Он умеет создавать архивы сайта и базы данных, отправлять их на FTP, Dropbox, S3 и другие сервисы. Можно настраивать расписание и оповещения по email.
Основные шаги:
- Установите BackWPup и перейдите в меню BackWPup > Add new job.
- Настройте задачи, включая бэкап базы, файлов и папки wp-content.
- Выберите способ хранения резервных копий.
- Установите расписание выполнения через Cron.
3. WP Time Capsule
WP Time Capsule отличается тем, что делает инкрементные копии — сохраняет только изменённые файлы и данные, что экономит место и время. Работает с Google Drive, Dropbox и Amazon S3.
Для настройки:
- Установите плагин и подключитесь к облачному хранилищу.
- Выберите папки и базы данных для бэкапа.
- Настройте расписание автоматического создания копий.
Создаем собственный скрипт для автоматического резервного копирования базы данных WordPress
Если не хочется использовать плагины, можно написать простой PHP-скрипт для создания резервной копии базы данных и настроить его запуск по Cron.
Ниже пример функции wptask_create_db_backup(), которая экспортирует базу в файл SQL с текущей датой:
function wptask_create_db_backup() {
global $wpdb;
$dbname = DB_NAME;
$dbuser = DB_USER;
$dbpass = DB_PASSWORD;
$dbhost = DB_HOST;
$backup_file = WP_CONTENT_DIR . '/backups/db-backup-' . date('Y-m-d_H-i-s') . '.sql';
$command = "mysqldump --user={$dbuser} --password={$dbpass} --host={$dbhost} {$dbname} > {$backup_file}";
system($command, $output);
if (file_exists($backup_file)) {
error_log('Backup created: ' . $backup_file);
} else {
error_log('Backup failed');
}
}Для запуска по расписанию добавьте в файл wp-config.php или подключаемый плагин вызов этой функции через wp_schedule_event. Пример планировщика:
add_action('wptask_daily_backup_hook', 'wptask_create_db_backup');
if (!wp_next_scheduled('wptask_daily_backup_hook')) {
wp_schedule_event(time(), 'daily', 'wptask_daily_backup_hook');
}Так вы получите ежедневную автоматическую резервную копию базы данных в папке wp-content/backups. Не забудьте создать эту папку и дать права на запись.
Резервное копирование файлов WordPress с помощью PHP
Для полной безопасности нужно резервировать и файлы сайта, особенно папку wp-content, где хранятся темы, плагины и медиа. Можно создать архив .zip с помощью PHP:
function wptask_backup_wpcontent() {
$zip = new ZipArchive();
$backup_file = WP_CONTENT_DIR . '/backups/wpcontent-backup-' . date('Y-m-d_H-i-s') . '.zip';
if ($zip->open($backup_file, ZipArchive::CREATE) !== TRUE) {
error_log('Cannot create zip file');
return;
}
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(WP_CONTENT_DIR),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(WP_CONTENT_DIR) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
error_log('Files backup created: ' . $backup_file);
}Эту функцию тоже можно запускать по Cron вместе с резервным копированием базы.
Как настроить Cron задачу для запуска бэкапов на хостинге
Большинство хостингов поддерживают Cron для автоматизации задач. Чтобы запустить скрипты бэкапа, нужно:
- Создать PHP-файл, который вызывает функции бэкапа, например
backup-run.php:
<?php
require_once('/path/to/wp-load.php');
wptask_create_db_backup();
wptask_backup_wpcontent();
?>- Настроить в панели управления хостингом Cron-задачу, которая будет выполнять команду:
php /путь/к/backup-run.php- Проверить логи, чтобы убедиться, что резервные копии создаются без ошибок.
Рекомендации по хранению и безопасности резервных копий WordPress
Очень важно не только создавать бэкапы, но и хранить их в безопасности:
- Используйте удалённые хранилища (облака, FTP) — так бэкапы не потеряются при проблемах с сервером.
- Регулярно проверяйте целостность архивов и возможность восстановления.
- Не храните резервные копии в открытом доступе — защитите папки паролями или настройками сервера.
- Удаляйте старые копии, чтобы не переполнять диск.
Если вы используете собственный скрипт, подумайте о шифровании резервных копий и безопасной передаче.
Итоги
Автоматическое резервное копирование WordPress — обязательный элемент поддержки сайта. Плагины вроде UpdraftPlus, BackWPup и WP Time Capsule позволяют быстро и без проблем организовать процесс. Для тех, кто любит контроль и минимализм, подойдут собственные PHP-решения с планировщиками Cron. Главное — не откладывать и настроить систему бэкапов как можно скорее.