Резервное копирование сайта — одна из важнейших задач при работе с WordPress. Автоматический бэкап позволяет защитить сайт от потери данных при сбоях, ошибках обновлений или взломах. В этой статье мы подробно разберём, как настроить автоматическое создание резервных копий, используя проверенные плагины и собственные решения на PHP.
Зачем нужен автоматический бэкап WordPress
Регулярное резервное копирование позволяет быстро восстановить работоспособность сайта при любых проблемах. Ручное создание бэкапов неудобно и требует контроля, поэтому автоматизация процесса — залог безопасности и спокойствия.
Автоматический бэкап поможет:
- Сохранить базу данных и файлы сайта без вашего участия.
- Быстро восстановить сайт в случае ошибки обновления или взлома.
- Обеспечить регулярность и надёжность резервных копий.
Далее рассмотрим лучшие практики и инструменты для автоматизации резервного копирования WordPress.
Популярные плагины для автоматического бэкапа WordPress
UpdraftPlus — универсальное решение для автоматических резервных копий
UpdraftPlus — один из самых популярных и надёжных плагинов для бэкапа WordPress. Он умеет создавать копии базы данных, файлов темы и плагинов, отправлять бэкапы на облачные хранилища (Google Drive, Dropbox, Amazon S3 и др.).
Основные возможности:
- Настройка расписания бэкапов (ежедневно, еженедельно и др.).
- Возможность выбирать, что именно сохранять — базу данных, файлы или всё вместе.
- Автоматическое удаление старых резервных копий.
- Лёгкое восстановление сайта из бэкапа в несколько кликов.
Для настройки:
- Установите и активируйте плагин через панель WordPress.
- В разделе
Настройки > UpdraftPlus Backupвыберите расписание и место хранения копий. - Сохраните настройки и создайте первый бэкап вручную для проверки.
BackWPup — ещё один мощный инструмент для резервного копирования
BackWPup позволяет создавать полные копии сайта и отправлять их на FTP, Dropbox, S3, Microsoft Azure и др. Есть возможность запускать бэкап по расписанию и проверять целостность копий.
Плагин удобен для тех, кто ищет гибкие настройки и интеграцию с разными сервисами.
Настройка похожа на UpdraftPlus: выбираете задачи, расписание, место хранения и сохраняете.
Создание собственного автоматического бэкапа WordPress с помощью кода
Если вы хотите минимизировать использование сторонних плагинов и создать лёгкий механизм бэкапа, можно написать собственный скрипт на PHP, который будет запускаться по расписанию с помощью wp-cron или системного cron.
Основная идея и подготовка
Для резервного копирования нужно сохранить базу данных и важные файлы сайта — wp-content, wp-config.php, .htaccess и другие.
В примере ниже мы создадим функцию, которая экспортирует базу данных в SQL-файл и архивирует папку с файлами в ZIP.
Пример функции автоматического бэкапа в WordPress (wp1_backup_create)
function wp1_backup_create() {
global $wpdb;
$upload_dir = wp_upload_dir();
$backup_dir = $upload_dir['basedir'] . '/wp1_backups';
if (!file_exists($backup_dir)) {
wp_mkdir_p($backup_dir);
}
// Имя файла с датой
$date = date('Y-m-d_H-i-s');
$db_file = $backup_dir . '/db_backup_' . $date . '.sql';
$zip_file = $backup_dir . '/files_backup_' . $date . '.zip';
// Экспорт базы данных
$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`;\n";
$sql_dump .= $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));
$sql_dump .= "INSERT INTO `$table_name` VALUES (" . implode(',', $values) . ");\n";
}
$sql_dump .= "\n";
}
file_put_contents($db_file, $sql_dump);
// Архивирование wp-content
$zip = new ZipArchive();
if ($zip->open($zip_file, ZipArchive::CREATE) === TRUE) {
$content_dir = ABSPATH . 'wp-content/';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($content_dir));
foreach ($files as $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($content_dir));
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
}
// Можно добавить отправку бэкапов на email или облако
}
// Запускаем бэкап раз в сутки
add_action('wp1_daily_backup_event', 'wp1_backup_create');
if (!wp_next_scheduled('wp1_daily_backup_event')) {
wp_schedule_event(time(), 'daily', 'wp1_daily_backup_event');
}
Данный код создаёт SQL-дамп базы данных и архивирует папку wp-content, сохраняя файлы в папке uploads/wp1_backups. Чтобы настроить отправку файлов на email или в облако, можно расширить функцию с использованием соответствующих API.
Настройка системного cron для запуска бэкапа
WP-Cron зависит от посещаемости сайта и может быть не всегда надёжным. Для стабильной работы бэкапа лучше настроить системный cron на сервере.
Для этого можно создать PHP-скрипт с функцией бэкапа и вызывать его через команду:
wget -q -O - https://wp-1.ru/wp-content/themes/your-theme/backup-script.php >/dev/null 2>&1Или использовать WP-CLI:
wp cron event run wp1_daily_backup_eventЭто позволит запускать резервное копирование в строго заданное время без зависимости от посетителей.
Рекомендации и советы по автоматическим бэкапам WordPress
- Храните резервные копии на удалённых серверах или облачных хранилищах, чтобы избежать потери данных при проблемах с сервером.
- Регулярно проверяйте работоспособность бэкапов, восстанавливая тестовый сайт из копий.
- Очищайте старые бэкапы, чтобы не занимать лишнее место на диске.
- Используйте шифрование и защиту доступа к архивам с резервными копиями.