Почему важно автоматизировать резервное копирование WordPress
Резервное копирование — основа безопасности любого сайта на WordPress. В случае взлома, ошибки обновления или сбоя хостинга наличие актуальной резервной копии позволяет быстро восстановить работу ресурса без потери данных. Но ручное создание копий — рутинная, часто забываемая задача, что увеличивает риск потери информации.
Автоматизация процесса резервного копирования избавляет от необходимости постоянного контроля и гарантирует регулярное сохранение данных. Для WordPress существует множество плагинов, которые позволяют настроить автоматическое создание бэкапов с возможностью отправки копий на удалённые хранилища, такие как Google Drive, Dropbox, FTP и др.
В этой статье разберём, как правильно настроить автоматическое резервное копирование, какие плагины выбрать и приведём примеры кода для кастомизации процесса.
Лучшие плагины для автоматического резервного копирования WordPress
UpdraftPlus — лидер по функционалу и популярности
UpdraftPlus — один из самых популярных плагинов для бэкапов. Он позволяет:
- Автоматически создавать полные или инкрементальные резервные копии;
- Выбирать расписание (ежедневно, еженедельно, ежемесячно);
- Отправлять копии на удалённые сервисы (Google Drive, Dropbox, Amazon S3, FTP и другие);
- Восстанавливать сайт прямо из панели администратора.
Чтобы настроить автоматическое создание резервных копий в UpdraftPlus, достаточно:
- Установить и активировать плагин;
- Перейти в настройки плагина и выбрать расписание для файлов и базы данных;
- Указать удалённое хранилище для хранения копий;
- Сохранить настройки и проверить работоспособность.
BackWPup — гибкий плагин с расширенными возможностями
BackWPup — ещё один проверенный инструмент для создания резервных копий. Особенности:
- Позволяет создавать полные, дифференциальные и экспорты базы данных;
- Поддерживает отправку копий на FTP, Dropbox, S3, Microsoft Azure и другие;
- Включает функции оптимизации и проверки базы данных;
- Имеет встроенный планировщик задач.
Настройка похожа на UpdraftPlus: выбираем задачи, расписание и место хранения копий.
Как настроить автоматическое резервное копирование без плагинов (через WP-Cron)
Иногда нужно реализовать резервное копирование без плагинов, например, для более тонкой кастомизации или минимизации нагрузки. WordPress имеет встроенную систему задач — WP-Cron, с помощью которой можно запускать функции по расписанию.
Пример функции, которая создаёт резервную копию базы данных и сохраняет её в папку wp-content/backups:
function wpmonitor_create_db_backup() {
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
wp_mkdir_p($backup_dir);
}
$backup_file = $backup_dir . '/db-backup-' . date('Y-m-d-H-i-s') . '.sql';
$handle = fopen($backup_file, 'w');
foreach ($tables as $table) {
$table_name = $table[0];
$create_table = $wpdb->get_row('SHOW CREATE TABLE ' . $table_name, ARRAY_N);
fwrite($handle, $create_table[1] . ";\n\n");
$rows = $wpdb->get_results('SELECT * FROM ' . $table_name, ARRAY_A);
foreach ($rows as $row) {
$values = array_map(function($value) use ($wpdb) {
return isset($value) ? "'" . esc_sql($value) . "'" : 'NULL';
}, array_values($row));
fwrite($handle, 'INSERT INTO ' . $table_name . ' VALUES (' . implode(', ', $values) . ");\n");
}
fwrite($handle, "\n");
}
fclose($handle);
}
function wpmonitor_schedule_db_backup() {
if (!wp_next_scheduled('wpmonitor_daily_db_backup')) {
wp_schedule_event(time(), 'daily', 'wpmonitor_daily_db_backup');
}
}
add_action('wp', 'wpmonitor_schedule_db_backup');
add_action('wpmonitor_daily_db_backup', 'wpmonitor_create_db_backup');Этот код создаёт ежедневное задание, которое сохраняет дамп базы данных в указанную папку. Можно расширить логику, добавив архивирование и отправку на удалённый сервер.
Отправка резервных копий на удалённые хранилища через код
Для повышения надёжности храните резервные копии не только на сервере сайта. Вот пример отправки файла на Google Drive с помощью Google API и PHP:
Для начала необходимо создать проект в Google Cloud Console и получить OAuth 2.0 credentials. Далее используйте Google API Client для PHP:
require_once 'vendor/autoload.php';
function wpmonitor_upload_to_gdrive($file_path) {
$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->addScope(Google_Service_Drive::DRIVE_FILE);
$service = new Google_Service_Drive($client);
$file = new Google_Service_Drive_DriveFile();
$file->setName(basename($file_path));
$result = $service->files->create($file, [
'data' => file_get_contents($file_path),
'mimeType' => 'application/octet-stream',
'uploadType' => 'multipart'
]);
return $result->id;
}Интеграция с облачными сервисами требует отдельной настройки, но даёт гарантию сохранности данных вне сервера.
Рекомендации по настройке автоматических резервных копий
Чтобы автоматизация работала эффективно и безопасно, следуйте этим советам:
- Регулярность: выбирайте расписание, подходящее для частоты обновления контента — для блогов достаточно раз в день, для интернет-магазинов лучше чаще.
- Разделение файлов и базы: создавайте отдельные копии базы и файлов, чтобы уменьшить размер и ускорить восстановление.
- Удалённое хранение: обязательно отправляйте копии на облачные сервисы или FTP, чтобы избежать потери при сбое сервера.
- Мониторинг и уведомления: настройте оповещения о статусе резервных копий, чтобы вовремя выявлять ошибки.
- Тестирование восстановления: периодически проверяйте копии, восстанавливая их на тестовом сайте.
Автоматизация резервного копирования — залог стабильности и безопасности вашего WordPress-сайта. Используйте плагины для быстрой настройки или кастомные решения для гибкости, чтобы быть уверенным в сохранности данных.