Резервное копирование сайта на WordPress — это необходимая мера для защиты данных и быстрого восстановления работоспособности при сбоях, ошибках обновлений или взломах. В этой статье разберём, как организовать автоматическое создание бэкапов с помощью популярных плагинов и собственного кода, чтобы обезопасить сайт без лишних усилий.
Почему важно использовать автоматическое резервное копирование WordPress
Резервные копии позволяют сохранить все данные сайта: файлы, настройки, базу данных. Если что-то пойдёт не так — например, обновление темы или плагина вызовет конфликт, или сайт окажется взломан — можно быстро восстановить рабочее состояние, не теряя информацию.
Ручное создание бэкапов неудобно и часто забывается, особенно если сайт активно развивается. Автоматизация процесса позволяет настроить регулярные копии, которые будут сохраняться без вашего участия. Это особенно важно для бизнес-сайтов и интернет-магазинов.
Кроме того, автоматическое резервное копирование часто включает функции хранения бэкапов на удалённых серверах, что дополнительно защищает от потери данных при сбоях хостинга.
Лучшие плагины для автоматического бэкапа WordPress
Существует множество плагинов, которые позволяют настроить автоматическое резервное копирование. Рассмотрим три популярных решения, проверенных на практике.
UpdraftPlus: удобство и функциональность
UpdraftPlus — один из самых популярных плагинов с удобным интерфейсом и множеством настроек. Позволяет создавать бэкапы базы данных и всех файлов, а также хранить их на удалённых хранилищах: Google Drive, Dropbox, FTP, Amazon S3 и других.
Чтобы настроить автоматические бэкапы, достаточно выбрать расписание — например, раз в день или раз в неделю, и указать место хранения. Плагин поддерживает восстановление в один клик.
BackWPup: расширенные возможности и интеграция
BackWPup позволяет создавать резервные копии и отправлять их на различные облачные сервисы. Кроме того, поддерживает проверку целостности бэкапов и их оптимизацию. В бесплатной версии доступен функционал для большинства задач, премиум добавляет расширенные настройки.
WPvivid Backup Plugin: простой и современный интерфейс
WPvivid — плагин с простым интерфейсом и мощными функциями. Поддерживает автоматическое создание бэкапов, миграцию и клонирование сайтов. Позволяет настроить расписание, исключить из бэкапа ненужные файлы или папки, хранить копии на удалённых серверах.
Как создать собственный скрипт для автоматического резервного копирования в WordPress
Если вы предпочитаете не использовать плагины или хотите более гибкое решение, можно написать свой скрипт для создания резервных копий базы данных и файлов. Ниже приведён пример, как это сделать с помощью PHP и WP Cron.
Настройка задачи WP Cron для запуска бэкапа
WP Cron позволяет запускать функции по расписанию. Для начала добавим новую задачу. В файл functions.php темы или в отдельный плагин вставьте код:
function wptem_schedule_backup() {
if (!wp_next_scheduled('wptem_daily_backup_event')) {
wp_schedule_event(time(), 'daily', 'wptem_daily_backup_event');
}
}
add_action('wp', 'wptem_schedule_backup');
add_action('wptem_daily_backup_event', 'wptem_perform_backup');Этот код проверяет, не запланировано ли уже событие, и если нет — устанавливает ежедневный запуск функции wptem_perform_backup.
Функция для резервного копирования базы данных и файлов
Теперь создадим функцию, которая будет создавать архив с базой данных и файлами сайта и сохранять его в папку wp-content/backups (создайте её вручную с правами записи):
function wptem_perform_backup() {
global $wpdb;
$upload_dir = wp_upload_dir();
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$timestamp = date('Y-m-d_H-i-s');
$backup_file = $backup_dir . '/backup_' . $timestamp . '.zip';
// Создаём временный файл для дампа базы данных
$db_file = $backup_dir . '/db_backup_' . $timestamp . '.sql';
// Получаем данные базы
$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)[1];
$sql_dump .= "DROP TABLE IF EXISTS `$table_name`;
";
$sql_dump .= "$create_table;
";
$rows = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A);
foreach ($rows as $row) {
$values = array_map(function($value) use ($wpdb) {
return isset($value) ? $wpdb->_real_escape($value) : 'NULL';
}, array_values($row));
$values_str = implode("', '", $values);
$sql_dump .= "INSERT INTO `$table_name` VALUES ('$values_str');
";
}
$sql_dump .= "
";
}
file_put_contents($db_file, $sql_dump);
// Создаём архив ZIP с дампом базы и файлами wp-content
$zip = new ZipArchive();
if ($zip->open($backup_file, ZipArchive::CREATE) === TRUE) {
$zip->addFile($db_file, basename($db_file));
// Добавляем папку uploads
$uploads_dir = $upload_dir['basedir'];
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($uploads_dir));
foreach ($files as $file) {
if (!$file->isDir()) {
$file_path = $file->getRealPath();
$relative_path = substr($file_path, strlen($uploads_dir) + 1);
$zip->addFile($file_path, 'uploads/' . $relative_path);
}
}
$zip->close();
// Удаляем временный SQL файл
unlink($db_file);
}
}Этот скрипт создаёт дамп базы данных и архивирует его вместе с папкой uploads. Вы можете расширить код, чтобы добавить другие важные каталоги, например, темы или плагины.
Как проверить и управлять бэкапами
После настройки автоматического бэкапа важно периодически проверять, что копии создаются и корректно сохраняются. Для этого:
- Проверьте папку хранения на наличие новых архивов;
- Попробуйте распаковать архив и проверить содержимое;
- Настройте уведомления по email о создании бэкапа (если используете плагин, многие из них это поддерживают);
- Регулярно удаляйте старые бэкапы, чтобы не переполнять диск.
Если вы используете собственный скрипт, можно добавить отправку email с уведомлением о результате бэкапа. Например:
function wptem_send_backup_notification($backup_file) {
$to = get_option('admin_email');
$subject = 'Резервное копирование сайта выполнено';
$message = 'Бэкап сайта WordPress успешно создан: ' . basename($backup_file);
wp_mail($to, $subject, $message);
}И вызвать эту функцию после успешного создания архива.
Резюме: что выбрать для автоматического резервного копирования WordPress
Для большинства пользователей оптимальным решением будут проверенные плагины: UpdraftPlus, BackWPup или WPvivid. Они позволяют гибко настраивать расписание, хранить копии в облаке и быстро восстанавливать сайт.
Если же вам нужна максимальная кастомизация или вы хотите интегрировать процесс бэкапа в свои скрипты — используйте WP Cron и собственные функции PHP, как показано в примере выше. Это потребует начальных знаний, но даст полный контроль над процессом.
Не забывайте регулярно проверять состояние бэкапов и хранить их копии в нескольких местах. Это позволит избежать потери данных и быстро восстановить сайт после любых проблем.