Резервное копирование сайта — одна из важнейших задач для любого администратора WordPress. Без надежных бэкапов можно потерять все данные при сбое, взломе или ошибках обновления. В этой статье подробно разберем, как настроить автоматическое создание резервных копий в WordPress, рассмотрим популярные плагины и приведем примеры кода для кастомных решений.
Почему важно автоматизировать создание резервных копий WordPress
Часто администраторы забывают регулярно делать бэкапы, что приводит к потере данных. Автоматизация помогает:
- Обеспечить регулярность сохранения данных без участия человека;
- Снизить риск потери важных изменений и контента;
- Упростить восстановление сайта после сбоев и ошибок.
Для эффективной автоматизации нужно выбрать подходящий инструмент и настроить расписание резервного копирования.
Основные способы автоматизации резервных копий в WordPress
Использование плагинов для автоматического бэкапа
Наиболее популярный способ — установить плагин с функцией автоматического резервного копирования. Вот несколько лучших вариантов:
- UpdraftPlus — один из самых популярных бесплатных плагинов, поддерживает планирование, хранение копий в облаке и восстановление в один клик.
- BackWPup — позволяет создавать резервные копии базы данных и файлов, загружать их на Dropbox, Google Drive, FTP и другие сервисы.
- WP Time Capsule — делает инкрементальные бэкапы, что экономит место и трафик, отлично подходит для больших сайтов.
Например, для настройки UpdraftPlus достаточно перейти в раздел настроек плагина, выбрать периодичность (например, ежедневно), указать место хранения (Google Drive, Dropbox, FTP или локальную папку) и сохранить изменения.
Пример настройки UpdraftPlus для ежедневных бэкапов с загрузкой в Google Drive
После установки и активации плагина:
- Перейдите в Настройки > UpdraftPlus Backup.
- В разделе «Настройки» выберите для файлов и базы данных план Ежедневно.
- Перейдите в раздел «Удалённые хранилища» и выберите Google Drive.
- Нажмите на ссылку для авторизации доступа к Google Drive и подтвердите разрешения.
- Сохраните изменения и выполните тестовый бэкап.
Таким образом вы получите автоматическое регулярное резервное копирование с сохранением копий в облаке.
Как сделать простое автоматическое резервное копирование через wp-cron с помощью кода
Если вы хотите обойтись без плагинов и реализовать собственное решение, можно использовать встроенный планировщик задач WordPress — wp-cron. Ниже пример функции для создания резервной копии базы данных и сохранения её в папке wp-content/backups.
function wponline_backup_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 = '';
foreach ( $tables as $table ) {
$table_name = $table[0];
$create_table = $wpdb->get_row( "SHOW CREATE TABLE {$table_name}", ARRAY_N );
$sql .= "\nDROP TABLE IF EXISTS `{$table_name}`;\n";
$sql .= $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) {
if ($value === null) return 'NULL';
return "'" . esc_sql($value) . "'";
}, array_values($row) );
$sql .= "INSERT INTO `{$table_name}` VALUES (" . implode(',', $values) . ");\n";
}
$sql .= "\n";
}
file_put_contents( $filepath, $sql );
}
function wponline_backup_schedule_event() {
if ( ! wp_next_scheduled( 'wponline_backup_daily_event' ) ) {
wp_schedule_event( time(), 'daily', 'wponline_backup_daily_event' );
}
}
add_action( 'wp', 'wponline_backup_schedule_event' );
add_action( 'wponline_backup_daily_event', 'wponline_backup_create_db_backup' );Этот код создает ежедневное событие, которое экспортирует всю базу данных в файл SQL в папку wp-content/backups. Разумеется, для полноценного бэкапа нужны еще файлы сайта, темы, плагины, но это основа для базы.
Резервное копирование файлов сайта: практические советы и примеры
База данных — только часть сайта. Файлы тем, плагинов, медиа и конфигурация тоже важны. Для их автоматизации можно использовать FTP-загрузчики, rsync, или плагины с функцией копирования файлов.
Пример простого PHP-скрипта для копирования папки wp-content/uploads в папку бэкапа:
function wponline_backup_copy_uploads() {
$source = WP_CONTENT_DIR . '/uploads';
$destination = WP_CONTENT_DIR . '/backups/uploads_backup_' . date('Y-m-d');
if ( ! file_exists( $destination ) ) {
mkdir( $destination, 0755, true );
}
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $item) {
$destPath = $destination . DIRECTORY_SEPARATOR . $iterator->getSubPathName();
if ($item->isDir()) {
if ( ! file_exists($destPath) ) {
mkdir($destPath);
}
} else {
copy($item, $destPath);
}
}
}Этот код можно вызывать по расписанию вместе с резервным копированием базы.
Как интегрировать резервные копии с облачными сервисами через плагины WPShop
Если вы используете продукты от WPSHOP, например, Clearfy Pro, вы можете дополнительно оптимизировать работу сайта, а WPRemark поможет управлять уведомлениями о статусе бэкапов.
Хотя специализированных плагинов для резервного копирования в ассортименте WPSHOP нет, их инструменты отлично дополняют процесс обеспечения безопасности и производительности сайта.
Советы по безопасности и хранению резервных копий
При настройке автоматического бэкапа важно:
- Хранить копии в надежном удалённом месте (облако, отдельный сервер);
- Ограничивать доступ к папкам с бэкапами, чтобы избежать утечки данных;
- Регулярно проверять целостность и возможность восстановления из резервных копий;
- Удалять старые копии, чтобы не занимать много места и не создавать путаницу.
Автоматизация должна включать и управление сроком хранения копий.