Резервное копирование сайта — критически важная задача для любого владельца WordPress, особенно если вы регулярно обновляете контент или добавляете новые функции. В этой статье подробно разберём, как настроить автоматическое создание резервных копий с помощью плагинов и собственного кода. Это позволит вам быстро восстановить сайт в случае ошибок, взлома или других проблем.
Почему важно автоматизировать резервное копирование WordPress
Ручное создание бэкапов занимает время и требует дисциплины. Многие забывают сделать копию перед обновлением плагинов или тем, что часто приводит к потере данных. Автоматизация исключает человеческий фактор и гарантирует регулярное сохранение важных файлов и базы данных.
Кроме того, автоматические копии можно хранить в удалённых хранилищах (Google Drive, Dropbox, FTP), что повышает уровень защиты.
Популярные плагины для автоматического бэкапа WordPress
Рассмотрим три проверенных плагина, которые позволяют настроить автоматическое резервное копирование с минимальными усилиями.
UpdraftPlus
Один из самых популярных и надёжных плагинов с поддержкой планировщика задач. Позволяет создавать полные или инкрементные копии, автоматически загружать их на облачные сервисы и восстанавливать в один клик.
Настройка простая: в разделе "Настройки" выбираете расписание для файлов и базы данных, указываете место хранения и сохраняете изменения.
BackWPup
Гибкий плагин с возможностью запуска бэкапа по расписанию и отправкой архивов на FTP, Dropbox, Amazon S3 и другие сервисы. Поддерживает создание логов и отчётов.
WPvivid Backup
Комплексное решение с функциями миграции и восстановления. Позволяет создавать автоматические копии и переносить сайт между хостингами.
Как настроить автоматический бэкап с помощью WPMake_backup_cron
Если вы хотите создать собственное решение без сторонних плагинов, можно настроить задачу WP-Cron, которая будет создавать резервные копии базы данных и файлов.
Ниже пример функции для создания резервной копии базы данных и сохранения её в папку wp-content/backups:
function wpmake_create_db_backup() {
global $wpdb;
$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;
$command = 'mysqldump --user=' . DB_USER . ' --password=' . DB_PASSWORD . ' --host=' . DB_HOST . ' ' . DB_NAME . ' > ' . $filepath;
exec($command);
}
function wpmake_schedule_backup() {
if (!wp_next_scheduled('wpmake_daily_db_backup')) {
wp_schedule_event(time(), 'daily', 'wpmake_daily_db_backup');
}
}
add_action('wpmake_daily_db_backup', 'wpmake_create_db_backup');
add_action('wp', 'wpmake_schedule_backup');Этот код создаёт ежедневную задачу, которая сохраняет дамп базы данных в указанную папку. Для работы нужен доступ к утилите mysqldump на сервере.
Для резервного копирования файлов можно использовать функции архивирования PHP (ZipArchive) и добавить их в ту же задачу.
Пример расширенного кода для резервного копирования файлов и базы данных
Ниже расширенный пример, который создаёт zip-архив с файлами wp-content/uploads и дампом базы данных:
function wpmake_backup_files_and_db() {
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$date = date('Y-m-d-H-i-s');
$zipname = $backup_dir . '/backup-' . $date . '.zip';
// Создаём дамп базы данных
$db_dump = $backup_dir . '/db-' . $date . '.sql';
$command = 'mysqldump --user=' . DB_USER . ' --password=' . DB_PASSWORD . ' --host=' . DB_HOST . ' ' . DB_NAME . ' > ' . $db_dump;
exec($command);
$zip = new ZipArchive();
if ($zip->open($zipname, ZipArchive::CREATE) === TRUE) {
// Добавляем папку uploads
$upload_dir = WP_CONTENT_DIR . '/uploads';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($upload_dir));
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(WP_CONTENT_DIR) + 1);
$zip->addFile($filePath, $relativePath);
}
}
// Добавляем дамп базы данных
$zip->addFile($db_dump, basename($db_dump));
$zip->close();
// Удаляем временный дамп
unlink($db_dump);
}
}
// Запускаем задачу раз в неделю
function wpmake_schedule_weekly_backup() {
if (!wp_next_scheduled('wpmake_weekly_backup_event')) {
wp_schedule_event(time(), 'weekly', 'wpmake_weekly_backup_event');
}
}
add_action('wpmake_weekly_backup_event', 'wpmake_backup_files_and_db');
add_action('wp', 'wpmake_schedule_weekly_backup');Таким образом, вы получаете архив с актуальными файлами и базой данных, который можно загрузить с сервера или автоматически отправлять на удалённые хранилища.
Как отправлять резервные копии на удалённые хранилища
Хранение бэкапов только на сервере — рискованно. Рассмотрим способы отправки архивов на внешние сервисы.
Отправка на Google Drive с помощью WPvivid Backup
WPvivid позволяет связать сайт с Google Drive и автоматически загружать туда резервные копии. Для этого в настройках плагина нужно пройти авторизацию и выбрать Google Drive как место хранения.
Отправка на FTP сервер
Можно настроить передачу файлов на FTP с помощью плагинов (BackWPup) или реализовать самостоятельно через PHP:
function wpmake_upload_backup_ftp($file) {
$ftp_server = 'ftp.example.com';
$ftp_user = 'user';
$ftp_pass = 'password';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if ($conn_id && $login_result) {
ftp_put($conn_id, basename($file), $file, FTP_BINARY);
ftp_close($conn_id);
}
}Вызывать эту функцию можно после создания архива в нашей задаче.
Рекомендации по хранению и безопасности бэкапов
1. Храните копии минимум в двух местах: на сервере и в облаке.
2. Устанавливайте права доступа к папкам с бэкапами, чтобы исключить доступ посторонних.
3. Регулярно тестируйте восстановление из резервных копий.
4. Удаляйте старые бэкапы, чтобы не занимать много места.
Использование плагина Clearfy Pro для оптимизации процесса резервного копирования
Clearfy Pro предлагает функции оптимизации, которые помогают уменьшить размер базы данных и файлов перед созданием копий. Это экономит место и ускоряет процесс бэкапа.
Плагин можно интегрировать с WPvivid Backup для создания более эффективных резервных копий.
Подробнее о Clearfy Pro и других инструментах смотрите на официциальном сайте WPShop.