Защита сайта на WordPress начинается с регулярного создания резервных копий. В случае взлома, ошибки обновления или других проблем, возможность быстро восстановить сайт из бэкапа — это залог стабильной работы и спокойствия администратора. В этой статье подробно разберем, как настроить автоматическое создание резервных копий на WordPress, рассмотрим лучшие плагины для этих целей, а также покажем, как написать собственный простой скрипт для создания бэкапов с уведомлениями по email.
Почему автоматические резервные копии важны для WordPress
WordPress — популярная CMS, и именно из-за своей популярности часто становится целью атак. Кроме того, обновления тем и плагинов иногда приводят к конфликтам, которые могут вывести сайт из строя. В таких случаях резервная копия позволяет:
- быстро восстановить сайт до рабочего состояния,
- защитить данные от потери при сбоях хостинга,
- экспериментировать с новыми плагинами и обновлениями без страха навредить сайту.
Ручное создание бэкапов неудобно и забывается, поэтому автоматизация процесса — лучший выбор.
Лучшие плагины для автоматического создания резервных копий в WordPress
Существует множество плагинов, которые позволяют настроить регулярное создание резервных копий с сохранением на внешний сервис или локально. Рассмотрим самые популярные и проверенные варианты.
UpdraftPlus — универсальное решение
UpdraftPlus позволяет создавать полные и инкрементные бэкапы, сохранять их на Dropbox, Google Drive, Amazon S3 и другие облачные сервисы. Настройка простая, есть возможность автоматического удаления старых копий.
- Автоматический запуск по расписанию.
- Восстановление сайта одним кликом.
- Поддержка мультисайтов.
BackWPup — расширенные возможности хранения
Плагин позволяет сохранять бэкапы в облако, FTP, Dropbox, S3. Есть гибкие настройки расписания и выбор компонентов для копирования (база данных, файлы, папки).
Пример настройки расписания:
add_filter('backwpup_schedule', function() { return 'daily'; });WPvivid Backup — бесплатный и простой
Поддерживает автоматическое создание бэкапов и их загрузку на облака, имеет встроенный планировщик, а также возможность миграции сайта.
Как написать собственный скрипт для автоматического создания резервной копии
Если по каким-то причинам хочется минимизировать использование плагинов, можно написать свой простой скрипт, который будет создавать резервные копии базы данных и файлов сайта, архивировать их и отправлять на email или загружать на FTP. Ниже пример такого решения, которое можно подключить в файл functions.php вашей темы.
Создание резервной копии базы данных
Сначала сделаем функцию для экспорта базы данных в файл SQL.
function wpnotes_backup_database() {
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
$backup_sql = '';
foreach ($tables as $table) {
$table_name = $table[0];
$create_table = $wpdb->get_row("SHOW CREATE TABLE `{$table_name}`", ARRAY_N);
$backup_sql .= "\n\n" . $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));
$backup_sql .= "INSERT INTO `{$table_name}` VALUES (" . implode(',', $values) . ");\n";
}
}
$file = WP_CONTENT_DIR . '/backup/wpnotes-db-backup-' . date('Y-m-d-H-i-s') . '.sql';
if (!file_exists(dirname($file))) {
mkdir(dirname($file), 0755, true);
}
file_put_contents($file, $backup_sql);
return $file;
}Архивирование файлов сайта
Для копирования файлов темы и плагинов можно использовать класс ZipArchive для создания ZIP-архива.
function wpnotes_backup_files() {
$zip = new ZipArchive();
$filename = WP_CONTENT_DIR . '/backup/wpnotes-files-backup-' . date('Y-m-d-H-i-s') . '.zip';
if ($zip->open($filename, ZipArchive::CREATE) !== TRUE) {
return false;
}
$rootPath = realpath(ABSPATH);
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
return $filename;
}Автоматизация и отправка уведомлений
Теперь объединим функции в задачу, которая будет запускаться по расписанию с помощью WP-Cron и отправлять уведомление на email.
function wpnotes_backup_task() {
$db_backup = wpnotes_backup_database();
$files_backup = wpnotes_backup_files();
$to = get_option('admin_email');
$subject = 'Резервная копия сайта WordPress';
$message = 'Созданы резервные копии базы данных и файлов сайта.';
$attachments = array_filter([$db_backup, $files_backup]);
wp_mail($to, $subject, $message, [], $attachments);
}
if (!wp_next_scheduled('wpnotes_daily_backup')) {
wp_schedule_event(time(), 'daily', 'wpnotes_daily_backup');
}
add_action('wpnotes_daily_backup', 'wpnotes_backup_task');Этот код настроит ежедневное создание резервных копий и отправку их на email администратора. Если хотите изменить частоту, можно использовать другие интервалы WP-Cron или создать свои.
Рекомендации по хранению резервных копий и безопасности
Создание бэкапов — только часть задачи. Важно обеспечить надежное хранение копий и безопасность доступа к ним.
- Храните копии на удаленных серверах — облака, FTP, внешние диски.
- Ограничьте доступ к папкам с бэкапами, чтобы злоумышленники не могли их скачать.
- Регулярно проверяйте возможность восстановления сайта из резервной копии.
- Используйте шифрование для важных бэкапов, если храните их в публичных облаках.
Если используете плагины, внимательно изучайте их отзывы и обновления — безопасность данных зависит и от качества используемых инструментов.
Выводы и практические советы
Автоматические резервные копии — обязательная часть любой серьезной работы с WordPress. Наиболее простой способ — использовать проверенные плагины, такие как UpdraftPlus или BackWPup, которые позволяют гибко настроить процесс и хранить копии в облаке.
Если вы хотите полный контроль и минимальное количество сторонних компонентов — можно написать собственные функции для создания бэкапов и отправки уведомлений, как показано в примерах выше.
Обязательно тестируйте восстановление из резервных копий и не забывайте о безопасности хранения. Так вы защитите свой сайт и обеспечите стабильную работу на долгие годы.