Резервное копирование — это одна из важнейших задач для любого сайта на WordPress. Потеря данных из-за ошибок, взломов или сбоев может привести к серьезным последствиям. В этой статье мы разберём, как создать автоматическое резервное копирование WordPress, используя проверенные плагины, а также рассмотрим пример простой кастомной функции для автоматизации процесса.
Почему важно иметь автоматическое резервное копирование WordPress
Ручное создание резервных копий — процесс, который легко забыть. Автоматизация помогает:
- Обеспечить регулярное сохранение актуальных данных сайта;
- Минимизировать риск потери информации;
- Экономить время на восстановление сайта после сбоев;
- Упростить миграцию и обновления.
Без регулярных бэкапов даже небольшая ошибка или взлом могут привести к длительному простою сайта и финансовым потерям.
Лучшие плагины для автоматического резервного копирования WordPress
Рассмотрим три популярных и надёжных плагина для автоматизации бэкапов:
1. UpdraftPlus
UpdraftPlus — один из самых популярных плагинов для резервного копирования и восстановления. Он позволяет настроить расписание, хранить бэкапы на удалённых серверах (Google Drive, Dropbox, Amazon S3 и др.) и легко восстанавливать сайт.
- Настраиваем периодичность резервного копирования — от нескольких раз в день до еженедельно;
- Выбираем, что копировать — база данных, файлы или всё вместе;
- Интеграция с облачными хранилищами;
- Простой интерфейс и удобное восстановление.
2. BackWPup
BackWPup отлично подходит для комплексного бэкапа с возможностью хранения архивов на FTP, Dropbox, S3, Microsoft Azure и других сервисах.
- Поддержка шифрования архивов;
- Планировщик заданий для автоматического запуска;
- Логирование процесса бэкапа;
- Возможность тестового восстановления.
3. WPvivid Backup Plugin
WPvivid предлагает простой и мощный функционал, включая автоматическое копирование, миграцию и клонирование сайтов.
- Автоматическая отправка файлов на выбранное облако;
- Интеграция с Google Drive, OneDrive, Dropbox;
- Интуитивно понятный интерфейс;
- Настройка исключений для ненужных файлов.
Настройка автоматического резервного копирования с помощью UpdraftPlus
Для примера рассмотрим настройку плагина UpdraftPlus:
- Установите и активируйте плагин через админ-панель WordPress.
- Перейдите в раздел Настройки > UpdraftPlus Резервные копии.
- Во вкладке Настройки выберите расписание для базы данных и файлов (например, ежедневно или ежечасно).
- Выберите удалённое хранилище (Google Drive, Dropbox и т. д.).
- Пройдите процесс авторизации для подключения облака.
- Сохраните настройки и нажмите кнопку Создать резервную копию для теста.
После этого плагин будет автоматически делать резервные копии согласно расписанию и сохранять их в выбранном месте.
Создание кастомной функции для автоматического резервного копирования базы данных WordPress
Если вы хотите добавить автоматическое резервное копирование с помощью собственного скрипта, можно использовать следующий пример. Он будет создавать дамп базы данных и сохранять его в папку wp-content/backups с именем, содержащим дату.
function wpnews_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;
$command = 'mysqldump --user=' . DB_USER . ' --password=' . DB_PASSWORD . ' --host=' . DB_HOST . ' ' . DB_NAME . ' > ' . escapeshellarg( $filepath );
exec( $command, $output, $return_var );
if ( $return_var === 0 ) {
error_log('wpnews: Резервная копия базы данных создана: ' . $filename);
} else {
error_log('wpnews: Ошибка при создании резервной копии базы данных');
}
}
add_action('wp_scheduled_backup_hook', 'wpnews_create_db_backup');
if ( ! wp_next_scheduled( 'wp_scheduled_backup_hook' ) ) {
wp_schedule_event( time(), 'daily', 'wp_scheduled_backup_hook' );
}Этот код создаёт планировщик, который раз в сутки запускает функцию wpnews_create_db_backup. Функция использует системную команду mysqldump для создания дампа базы данных. Чтобы этот код работал, сервер должен поддерживать вызов exec и иметь доступ к утилите mysqldump.
Обратите внимание, что хранение пароля базы данных в команде — не самый безопасный способ, поэтому для продакшена лучше использовать более защищённые методы или плагины.
Как автоматизировать резервное копирование файлов WordPress через PHP
Резервное копирование файлов сайта — не менее важная задача. Для этого можно добавить функцию, которая создаёт архив с необходимыми папками, например wp-content/uploads.
function wpnews_backup_uploads_folder() {
$uploads_dir = wp_get_upload_dir()['basedir'];
$backup_dir = WP_CONTENT_DIR . '/backups';
if ( ! file_exists( $backup_dir ) ) {
wp_mkdir_p( $backup_dir );
}
$zipname = $backup_dir . '/uploads-backup-' . date('Y-m-d-H-i-s') . '.zip';
$zip = new ZipArchive();
if ( $zip->open( $zipname, ZipArchive::CREATE ) === TRUE ) {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($uploads_dir), RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($uploads_dir) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
error_log('wpnews: Резервная копия uploads создана: ' . $zipname);
} else {
error_log('wpnews: Не удалось создать архив uploads');
}
}
add_action('wp_scheduled_backup_files', 'wpnews_backup_uploads_folder');
if ( ! wp_next_scheduled( 'wp_scheduled_backup_files' ) ) {
wp_schedule_event( time(), 'daily', 'wp_scheduled_backup_files' );
}Эта функция создаёт ZIP-архив папки uploads и сохраняет его в папке backups. Аналогично можно расширить архивирование на другие важные директории.
Рекомендации по хранению и безопасности бэкапов
При организации резервного копирования важно учитывать:
- Храните бэкапы вне корневой папки сайта, чтобы они не были доступны по прямой ссылке;
- Используйте облачные хранилища или внешние серверы для копий;
- Ограничьте доступ к папкам с бэкапами через .htaccess или другими методами;
- Регулярно проверяйте целостность и возможность восстановления из бэкапов;
- Удаляйте устаревшие копии, чтобы не занимать лишнее место.
Заключение
Автоматическое резервное копирование — неотъемлемая часть поддержки сайта на WordPress. Использование готовых плагинов, таких как UpdraftPlus, BackWPup или WPvivid, позволяет быстро и просто настроить надёжные бэкапы. Для опытных разработчиков полезно создавать кастомные функции, которые можно интегрировать с планировщиком WordPress и адаптировать под свои задачи.
Настройка и тестирование резервных копий — залог спокойствия и безопасности вашего сайта на wpnews.ru.