Резервное копирование сайта — это одна из важнейших задач для любого администратора WordPress. Регулярные бэкапы позволяют быстро восстановить сайт после сбоев, взломов или ошибок обновлений. В этой статье мы подробно разберём, как настроить автоматическое создание резервных копий именно через код, а также рассмотрим лучшие плагины для автоматизации этого процесса.
Почему важно автоматизировать создание бэкапов в WordPress
Ручное создание резервных копий отнимает много времени и часто забывается. Автоматизация избавляет от этой проблемы — вы можете настроить периодическое выполнение задач, не беспокоясь о контроле процесса. Также автоматическое создание бэкапов позволяет настроить хранение копий на удалённых серверах или облаках, что повышает безопасность данных.
Важные аспекты автоматизации:
- Регулярность — расписание создания копий (ежедневно, еженедельно и т.д.)
- Хранение — локально, на FTP, в облаке (Google Drive, Dropbox, Amazon S3)
- Уведомления — информирование о статусе бэкапа
- Минимальное влияние на производительность сайта
Автоматическое создание резервных копий через WP-Cron и код
WordPress имеет встроенный механизм планировщика задач — WP-Cron. С его помощью можно настроить автоматический запуск функции создания резервной копии в заданное время. Ниже приводится пример, как реализовать простой автоматический бэкап базы данных и загрузку его на сервер.
Создание функции резервного копирования базы данных
Для начала создадим функцию wpsystem_create_db_backup, которая выгружает базу данных в SQL-файл.
function wpsystem_create_db_backup() {
global $wpdb;
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
wp_mkdir_p($backup_dir);
}
$filename = 'db-backup-' . date('Y-m-d-H-i-s') . '.sql';
$filepath = $backup_dir . '/' . $filename;
$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 .= "DROP TABLE IF EXISTS `$table_name`;
";
$sql_dump .= $create_table[1] . ";
";
$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($val) { return "'" . addslashes($val) . "'"; }, $values);
$sql_dump .= "INSERT INTO `$table_name` VALUES (" . implode(',', $values) . ");
";
}
$sql_dump .= "
";
}
file_put_contents($filepath, $sql_dump);
// Можно добавить отправку файла на email или в облако здесь
}
Регистрация задачи WP-Cron для автоматического запуска бэкапа
Зарегистрируем событие, которое будет запускаться ежедневно. Добавим в functions.php или в свой плагин:
if (!wp_next_scheduled('wpsystem_daily_db_backup')) {
wp_schedule_event(time(), 'daily', 'wpsystem_daily_db_backup');
}
add_action('wpsystem_daily_db_backup', 'wpsystem_create_db_backup');
Теперь функция wpsystem_create_db_backup будет запускаться автоматически раз в сутки.
Как хранить резервные копии на удалённых сервисах
Хранить бэкапы только на сервере рискованно — при сбое или взломе сайта копии могут быть потеряны. Лучше использовать облачные хранилища или FTP-серверы.
Загрузка бэкапа на Google Drive с помощью плагина
Если вы не хотите реализовывать загрузку на облако через код, рекомендуем использовать плагин Google Drive Backup из каталога WPSHOP — он позволяет автоматически выгружать резервные копии в Google Drive с удобным управлением.
Пример кода для загрузки файла на FTP сервер
Если хотите сделать автоматическую отправку резервной копии на FTP, можно добавить в функцию wpsystem_create_db_backup следующий код (укажите свои данные):
$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_pasv($conn_id, true);
ftp_put($conn_id, '/backups/' . $filename, $filepath, FTP_BINARY);
ftp_close($conn_id);
} else {
error_log('FTP connection failed for backup upload');
}
Плагины для автоматического создания резервных копий в WordPress
Если вы предпочитаете не писать код, есть проверенные плагины с гибкими настройками автоматизации:
- UpdraftPlus — один из самых популярных и надёжных плагинов с поддержкой облаков (Google Drive, Dropbox, Amazon S3 и др.), расписанием, шифрованием.
- BackWPup — бесплатный плагин с возможностью планирования бэкапов и загрузки на удалённые сервисы.
- WPvivid Backup — удобный интерфейс и множество опций, включая миграцию.
Для интеграции с WPSHOP рекомендую посмотреть Clearfy Pro, который оптимизирует работу сайта и совместим с плагинами бэкапа.
Рекомендации по безопасности и производительности
Автоматизация резервного копирования требует внимательности к безопасному хранению копий и минимальному влиянию на скорость сайта. Вот несколько советов:
- Храните бэкапы вне корневой папки сайта, чтобы исключить доступ извне.
- Используйте шифрование файлов бэкапа, если есть конфиденциальные данные.
- Настраивайте расписание на время минимальной нагрузки, например, ночью.
- Регулярно проверяйте целостность резервных копий и возможность восстановления.
Выводы
Автоматическое создание резервных копий в WordPress — необходимая практика для любого сайта. Использование WP-Cron с собственным кодом даёт полный контроль, а готовые плагины упрощают задачу и расширяют функционал. Рекомендуется комбинировать оба подхода для максимальной надёжности и безопасности.