Почему важно настроить автоматическое резервное копирование WordPress
Резервное копирование — это краеугольный камень безопасности любого сайта, особенно на WordPress, который является самой популярной CMS в мире. Непредвиденные ситуации — взлом, сбой хостинга, ошибки обновлений или плагинов — могут привести к потере данных и длительному простою сайта.
Автоматизация резервного копирования позволяет регулярно сохранять актуальные копии сайта без вашего постоянного участия. Это экономит время и гарантирует, что вы всегда сможете быстро восстановить работоспособность проекта.
В этой статье мы рассмотрим, как настроить автоматическое резервное копирование с помощью популярных плагинов и как создать собственное решение с использованием PHP-кода.
Использование плагинов для автоматического резервного копирования
1. UpdraftPlus — удобный и функциональный плагин
UpdraftPlus — один из самых популярных плагинов для бэкапов. Он позволяет создавать резервные копии файлов сайта и базы данных, автоматически сохранять их в облачные хранилища (Google Drive, Dropbox, Amazon S3 и др.) и восстанавливать в один клик.
Преимущества UpdraftPlus:
- Простая настройка расписания резервных копий;
- Выбор компонентов для резервирования (файлы, база данных, плагины, темы);
- Поддержка множества облачных сервисов;
- Возможность хранения нескольких копий;
- Восстановление прямо из админки WordPress.
Чтобы настроить автоматическое резервное копирование:
- Установите и активируйте плагин UpdraftPlus;
- Перейдите в раздел Настройки > UpdraftPlus Backup;
- Выберите расписание резервного копирования (например, раз в день для базы данных и раз в неделю для файлов);
- Выберите облачный сервис и настройте подключение;
- Сохраните настройки и запустите тестовое резервное копирование.
2. BackWPup — мощный инструмент с расширенными возможностями
BackWPup — ещё один популярный плагин, который позволяет создавать полные бэкапы сайта, включая файлы и базу данных, и отправлять их на FTP, Dropbox, S3 и другие сервисы.
Особенности:
- Гибкое расписание задач;
- Поддержка нескольких типов хранения;
- Логирование процесса резервного копирования;
- Опция проверки целостности бэкапа.
Настройка проводится через создание новой задачи в интерфейсе плагина, где вы указываете, что именно копировать и куда сохранять.
Создание собственного решения для автоматического резервного копирования на WPDownload
Если вы хотите иметь полный контроль и минимизировать использование сторонних плагинов, можно реализовать автоматическое резервное копирование с помощью собственного PHP-кода. Ниже приведён пример простого плагина, который раз в сутки создаёт резервную копию базы данных и сохраняет её в отдельной папке.
Основные шаги создания плагина для бэкапа
1. Создать плагин с хуком на cron для запуска задачи резервного копирования.
2. Использовать WPDownload_backup_database() для экспорта базы данных в файл .sql.
3. Хранить файлы в защищённой папке wp-content/uploads/wpdownload-backups.
4. Добавить функцию очистки старых бэкапов.
<?php
/*
Plugin Name: WPDownload Авто Бэкап
Description: Автоматическое резервное копирование базы данных WordPress.
Version: 1.0
Author: WPDownload
*/
register_activation_hook(__FILE__, 'wpdownload_activate_backup_cron');
register_deactivation_hook(__FILE__, 'wpdownload_deactivate_backup_cron');
function wpdownload_activate_backup_cron() {
if (!wp_next_scheduled('wpdownload_daily_backup_event')) {
wp_schedule_event(time(), 'daily', 'wpdownload_daily_backup_event');
}
}
function wpdownload_deactivate_backup_cron() {
$timestamp = wp_next_scheduled('wpdownload_daily_backup_event');
wp_unschedule_event($timestamp, 'wpdownload_daily_backup_event');
}
add_action('wpdownload_daily_backup_event', 'wpdownload_backup_database');
function wpdownload_backup_database() {
global $wpdb;
$backup_dir = WP_CONTENT_DIR . '/uploads/wpdownload-backups';
if (!file_exists($backup_dir)) {
wp_mkdir_p($backup_dir);
}
$filename = 'backup-' . date('Y-m-d-H-i-s') . '.sql';
$filepath = $backup_dir . '/' . $filename;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
$sql = '';
foreach ($tables as $table) {
$table_name = $table[0];
$create_table = $wpdb->get_row("SHOW CREATE TABLE $table_name", ARRAY_N);
$sql .= "DROP TABLE IF EXISTS `$table_name`;\n";
$sql .= $create_table[1] . ";\n\n";
$rows = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A);
foreach ($rows as $row) {
$values = array_map('esc_sql', array_values($row));
$values = array_map(function($v) { return "'" . addslashes($v) . "'"; }, $values);
$sql .= "INSERT INTO `$table_name` VALUES(" . implode(',', $values) . ");\n";
}
$sql .= "\n";
}
file_put_contents($filepath, $sql);
// Очистка бэкапов старше 14 дней
$files = glob($backup_dir . '/*.sql');
$now = time();
foreach ($files as $file) {
if (is_file($file) && $now - filemtime($file) >= 14 * DAY_IN_SECONDS) {
unlink($file);
}
}
}
// Добавим возможность запускать резервное копирование вручную из админки
add_action('admin_menu', function() {
add_submenu_page('tools.php', 'WPDownload Backup', 'WPDownload Backup', 'manage_options', 'wpdownload-backup', 'wpdownload_backup_page');
});
function wpdownload_backup_page() {
if (!current_user_can('manage_options')) {
wp_die('Доступ запрещён');
}
if (isset($_POST['wpdownload_run_backup'])) {
wpdownload_backup_database();
echo '<div class="updated">Резервное копирование выполнено</div>';
}
echo '<h1>WPDownload Автоматическое резервное копирование</h1>';
echo '<form method="post">';
echo '<input type="hidden" name="wpdownload_run_backup" value="1" />';
echo '<input type="submit" value="Создать резервную копию сейчас" class="button button-primary" />';
echo '</form>';
}
?>Дополнительные рекомендации по безопасности и хранению бэкапов
Создавая резервные копии, важно хранить их в безопасном месте, недоступном для посторонних. Лучше всего использовать облачные хранилища с двухфакторной аутентификацией или удалённые серверы.
Также рекомендуется регулярно проверять целостность бэкапов и тестировать восстановление сайта из них, чтобы избежать неприятных сюрпризов в критической ситуации.
Для более полного резервного копирования можно расширить приведённый пример, добавив копирование папки wp-content, которая содержит темы, плагины и медиафайлы.
Использование плагинов с поддержкой шифрования и сжатия бэкапов поможет снизить объём хранимых данных и повысит безопасность.
Заключение
Автоматическое резервное копирование — обязательный элемент управления WordPress-сайтом. WPDownload предлагает как использовать проверенные плагины, так и создать собственные решения под свои нужды. Важно настроить регулярное создание бэкапов, обеспечить их безопасное хранение и периодически проверять процесс восстановления.