Резервное копирование сайта — это обязательный элемент безопасного управления WordPress. В этой статье подробно разберём, как с помощью плагина WPReset и дополнительных настроек организовать автоматическое создание резервных копий базы данных и файлов сайта. Это поможет вам быстро восстановить сайт после ошибок, обновлений или взломов.
Почему важно делать автоматические резервные копии WordPress
Резервное копирование защищает от потери данных в случае сбоя сервера, ошибки обновления или действий злоумышленников. Ручное создание копий неудобно и легко забывается, поэтому автоматизация процесса — оптимальный вариант.
Данные для резервного копирования включают базу данных (содержимое сайта, настройки, записи) и файлы (темы, плагины, медиафайлы). Пропуск хотя бы одного компонента может привести к неполноценному восстановлению.
WPReset имеет встроенные инструменты для быстрого восстановления, но для полноценной защиты нужно настроить автоматическое создание резервных копий по расписанию.
Настройка автоматического резервного копирования с помощью WPReset
Установка и базовая настройка WPReset
Для начала установите плагин WPReset с официального репозитория WordPress или скачайте с wpshop.ru. Активируйте плагин и перейдите в его настройки.
WPReset позволяет создавать снимки (snapshots) базы данных и файлов вручную. Чтобы автоматизировать процесс, потребуется задействовать WP-Cron или системный cron с кастомным кодом.
Создание snapshots с помощью кода и WP-Cron
Добавьте в файл functions.php вашей темы или в отдельный плагин следующий код, который запустит автоматическое создание снимка раз в сутки:
function wpresetru_create_snapshot() {
if ( ! class_exists( 'WPReset\Core' ) ) {
return;
}
$wpreset = new WPReset\Core();
$snapshot_id = $wpreset->snapshots->create_snapshot( 'Автоматический снимок по расписанию' );
}
function wpresetru_schedule_snapshot() {
if ( ! wp_next_scheduled( 'wpresetru_daily_snapshot' ) ) {
wp_schedule_event( time(), 'daily', 'wpresetru_daily_snapshot' );
}
}
add_action( 'wpresetru_daily_snapshot', 'wpresetru_create_snapshot' );
add_action( 'wp', 'wpresetru_schedule_snapshot' );Этот код проверяет, активен ли WPReset, и создаёт снимок с названием «Автоматический снимок по расписанию» каждый день. Запуск происходит через стандартный WP-Cron, который срабатывает при посещении сайта.
Использование системного cron для более надежной работы
WP-Cron зависит от посещений сайта, поэтому лучше настроить системный cron на сервере для вызова wp-cron.php регулярно.
Добавьте в crontab команду:
wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1Это обеспечит точное выполнение заданий WP-Cron, включая создание снимков.
Настройка хранения и очистки резервных копий
По умолчанию WPReset хранит snapshots в базе данных и в папке плагина. Чтобы не переполнять хранилище, настройте регулярную очистку старых копий.
Добавьте функцию для удаления снимков старше определённого количества дней:
function wpresetru_cleanup_old_snapshots() {
if ( ! class_exists( 'WPReset\Core' ) ) {
return;
}
$wpreset = new WPReset\Core();
$snapshots = $wpreset->snapshots->get_snapshots();
$now = time();
$days_limit = 7; // Хранить не более 7 дней
foreach ( $snapshots as $snapshot ) {
$snapshot_time = strtotime( $snapshot['created'] );
if ( ( $now - $snapshot_time ) > $days_limit * DAY_IN_SECONDS ) {
$wpreset->snapshots->delete_snapshot( $snapshot['id'] );
}
}
}
add_action( 'wpresetru_daily_snapshot', 'wpresetru_cleanup_old_snapshots' );Эта функция удалит все снимки старше недели при запуске ежедневного задания.
Автоматическое резервное копирование файлов сайта
WPReset не копирует файлы сайта (плагины, темы, uploads) в snapshots. Для этого можно использовать дополнительные плагины или написать собственный скрипт.
Пример простого решения для копирования папки uploads раз в день через WP-Cron:
function wpresetru_backup_uploads() {
$upload_dir = wp_upload_dir();
$source = $upload_dir['basedir'];
$backup_dir = WP_CONTENT_DIR . '/uploads-backup-' . date('Y-m-d');
if ( ! file_exists( $backup_dir ) ) {
mkdir( $backup_dir, 0755, true );
}
// Рекурсивное копирование файлов
wpresetru_recurse_copy( $source, $backup_dir );
}
function wpresetru_recurse_copy( $src, $dst ) {
$dir = opendir( $src );
@mkdir( $dst );
while ( false !== ( $file = readdir( $dir ) ) ) {
if ( ( $file != '.' ) && ( $file != '..' ) ) {
if ( is_dir( $src . '/' . $file ) ) {
wpresetru_recurse_copy( $src . '/' . $file, $dst . '/' . $file );
} else {
copy( $src . '/' . $file, $dst . '/' . $file );
}
}
}
closedir( $dir );
}
add_action( 'wpresetru_daily_snapshot', 'wpresetru_backup_uploads' );Этот код создаст копию папки uploads с датой в названии. Для надежности рекомендуем настроить удаление старых резервных копий вручную или с помощью скриптов.
Интеграция с другими плагинами для резервного копирования
Если вам нужны дополнительные возможности — например, резервное копирование на удалённый сервер, облако или по FTP — рассмотрите плагины как UpdraftPlus или BackWPup. Они отлично дополняют WPReset, отвечая за файлы, а WPReset — за быстрые снимки базы данных.
Для интеграции воспользуйтесь их настройками или вызовите создание резервных копий через WP-Cron по расписанию.
Выводы и рекомендации
Автоматическое резервное копирование — это простой, но важный шаг для стабильности вашего сайта. WPReset предоставляет удобный инструмент для создания быстрых снимков базы данных, а дополнительный код и плагины помогут расширить резервное копирование до файлов.
Используйте системный cron для надежности, настраивайте очистку старых копий и комбинируйте инструменты для максимальной защиты вашего WordPress.