Зачем нужен автоматический бэкап сайта на WordPress
Резервное копирование (бэкап) — обязательный элемент поддержки любого сайта. Особенно важно регулярно сохранять копии базы данных и файлов сайта, чтобы быстро восстановиться после сбоев, взломов или ошибок при обновлениях. Автоматизация процесса позволяет исключить человеческий фактор и не забывать делать бэкапы.
В этой статье подробно разберем, как настроить автоматическую систему резервного копирования для WordPress с помощью готовых плагинов и кастомных PHP-скриптов. Вы узнаете, как оптимально сохранить данные, куда их отправлять, как настроить расписание и уведомления.
Популярные плагины для автоматического резервного копирования WordPress
UpdraftPlus — мощный и бесплатный вариант
UpdraftPlus — один из самых популярных и функциональных плагинов для автоматического бэкапа. Позволяет сохранять не только базу данных, но и все файлы сайта, темы и плагины. Поддерживает облачные хранилища: Google Drive, Dropbox, Amazon S3 и другие.
Основные возможности:
- Настройка расписания бэкапов (ежедневно, еженедельно и т.д.)
- Хранение бэкапов в облаке или локально
- Восстановление сайта из бэкапа в один клик
- Исключение определенных папок и файлов
Для установки достаточно перейти в админку WordPress > Плагины > Добавить новый, найти UpdraftPlus, установить и активировать. После этого в разделе Настройки > UpdraftPlus можно настроить расписание и место хранения.
BackWPup — расширенные возможности для опытных пользователей
BackWPup позволяет создавать полные бэкапы сайта и базы данных, а также отправлять копии на FTP, Dropbox, S3, Microsoft Azure и другие сервисы. Плюс есть возможность создавать лог-файлы и проверять целостность резервных копий.
Преимущества:
- Гибкая настройка расписания и условий создания бэкапов
- Поддержка нескольких форматов архивов (.zip, .tar.gz)
- Отправка уведомлений на email
- Интеграция с WP-CLI для автоматизации с командной строки
Создание собственного автоматического бэкапа через код в WordPress
Если вы хотите полный контроль над процессом бэкапа, можно написать свой PHP-скрипт, который будет создавать архив с файлами и дампом базы данных, а затем запускать его по расписанию с помощью WP-Cron или системного cron.
Основные шаги:
- Создать функцию, которая экспортирует базу данных и сохраняет ее в файл
- Добавить архивирование нужных папок сайта (wp-content, темы, плагины)
- Сохранить архив в указанную папку или отправить на удаленный сервер/почту
- Настроить планировщик задач для регулярного запуска
Пример функции для экспорта базы данных в файл SQL
function _2wp_export_database_backup() {
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
$sql_dump = '';
foreach ($tables as $table) {
$table_name = $table[0];
$create_table = $wpdb->get_row("SHOW CREATE TABLE $table_name", ARRAY_N);
$sql_dump .= "\nDROP TABLE IF EXISTS `$table_name`;\n";
$sql_dump .= $create_table[1] . ";\n\n";
$rows = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A);
foreach ($rows as $row) {
$vals = array_map(array($wpdb, 'escape'), array_values($row));
$vals = array_map(function($val) { return is_null($val) ? 'NULL' : "'" . addslashes($val) . "'"; }, $vals);
$sql_dump .= "INSERT INTO `$table_name` VALUES (" . implode(',', $vals) . ");\n";
}
}
$backup_file = WP_CONTENT_DIR . '/backups/db-backup-' . date('Y-m-d-H-i-s') . '.sql';
file_put_contents($backup_file, $sql_dump);
return $backup_file;
}Этот код создает дамп всей базы данных в папку wp-content/backups с меткой времени.
Архивирование файлов сайта
Для создания архива с файлами можно использовать класс ZipArchive PHP. Ниже пример функции для архивации папки wp-content:
function _2wp_zip_wp_content() {
$zip = new ZipArchive();
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$zip_file = $backup_dir . '/files-backup-' . date('Y-m-d-H-i-s') . '.zip';
if ($zip->open($zip_file, ZipArchive::CREATE) !== TRUE) {
return false;
}
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(WP_CONTENT_DIR));
foreach ($files as $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(WP_CONTENT_DIR) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
return $zip_file;
}Автоматизация запуска бэкапов с помощью WP-Cron
Чтобы запускать бэкап регулярно, подключим собственное событие в WP-Cron. Добавим в файл темы или плагина следующий код:
if (!wp_next_scheduled('2wp_daily_backup_event')) {
wp_schedule_event(time(), 'daily', '2wp_daily_backup_event');
}
add_action('2wp_daily_backup_event', '2wp_run_daily_backup');
function 2wp_run_daily_backup() {
$db_backup = _2wp_export_database_backup();
$files_backup = _2wp_zip_wp_content();
// Можно реализовать отправку бэкапов на почту или в облако
// Например, отправка письма с файлами как вложениями
}Таким образом, сайт будет создавать копии базы и файлов автоматически раз в сутки.
Отправка резервных копий на удаленный сервер или облако
Чтобы не занимать место на сервере и гарантировать сохранность, рекомендуем отправлять бэкапы на сторонние сервисы. Плагины UpdraftPlus и BackWPup имеют встроенные интеграции с Dropbox, Google Drive и Amazon S3.
Для кастомных решений можно настроить отправку по FTP, SFTP или через API облачных хранилищ.
Пример отправки файла на FTP:
function _2wp_send_backup_to_ftp($file_path) {
$ftp_server = 'ftp.example.com';
$ftp_user = 'user';
$ftp_pass = 'pass';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if (!$conn_id || !$login_result) {
return false;
}
$remote_file = '/backups/' . basename($file_path);
$upload = ftp_put($conn_id, $remote_file, $file_path, FTP_BINARY);
ftp_close($conn_id);
return $upload;
}Рекомендации по безопасности и хранению бэкапов
Храните резервные копии в надежных местах с ограниченным доступом. Не оставляйте бэкапы в корневой директории сайта, чтобы их не могли скачать злоумышленники. Используйте защищенные облачные сервисы и шифрование, если есть возможность.
Регулярно проверяйте целостность и возможность восстановления из бэкапа. Не забывайте очищать старые копии, чтобы не переполнять диск.
Если вы используете плагин Clearfy Pro, в нем есть функции по оптимизации и безопасности, которые можно сочетать с резервным копированием для комплексной защиты сайта. Подробнее на wpshop.ru.