wpdownload.ru wordpress WPDownload.ru

Как создать автоматическое резервное копирование WordPress сайта

Почему важно настроить автоматическое резервное копирование WordPress

Резервное копирование — это краеугольный камень безопасности любого сайта, особенно на WordPress, который является самой популярной CMS в мире. Непредвиденные ситуации — взлом, сбой хостинга, ошибки обновлений или плагинов — могут привести к потере данных и длительному простою сайта.

Автоматизация резервного копирования позволяет регулярно сохранять актуальные копии сайта без вашего постоянного участия. Это экономит время и гарантирует, что вы всегда сможете быстро восстановить работоспособность проекта.

В этой статье мы рассмотрим, как настроить автоматическое резервное копирование с помощью популярных плагинов и как создать собственное решение с использованием PHP-кода.

Использование плагинов для автоматического резервного копирования

1. UpdraftPlus — удобный и функциональный плагин

UpdraftPlus — один из самых популярных плагинов для бэкапов. Он позволяет создавать резервные копии файлов сайта и базы данных, автоматически сохранять их в облачные хранилища (Google Drive, Dropbox, Amazon S3 и др.) и восстанавливать в один клик.

Преимущества UpdraftPlus:

  • Простая настройка расписания резервных копий;
  • Выбор компонентов для резервирования (файлы, база данных, плагины, темы);
  • Поддержка множества облачных сервисов;
  • Возможность хранения нескольких копий;
  • Восстановление прямо из админки WordPress.

Чтобы настроить автоматическое резервное копирование:

  1. Установите и активируйте плагин UpdraftPlus;
  2. Перейдите в раздел Настройки > UpdraftPlus Backup;
  3. Выберите расписание резервного копирования (например, раз в день для базы данных и раз в неделю для файлов);
  4. Выберите облачный сервис и настройте подключение;
  5. Сохраните настройки и запустите тестовое резервное копирование.

2. BackWPup — мощный инструмент с расширенными возможностями

BackWPup — ещё один популярный плагин, который позволяет создавать полные бэкапы сайта, включая файлы и базу данных, и отправлять их на FTP, Dropbox, S3 и другие сервисы.

Особенности:

  • Гибкое расписание задач;
  • Поддержка нескольких типов хранения;
  • Логирование процесса резервного копирования;
  • Опция проверки целостности бэкапа.

Настройка проводится через создание новой задачи в интерфейсе плагина, где вы указываете, что именно копировать и куда сохранять.

Создание собственного решения для автоматического резервного копирования на WPDownload

Если вы хотите иметь полный контроль и минимизировать использование сторонних плагинов, можно реализовать автоматическое резервное копирование с помощью собственного PHP-кода. Ниже приведён пример простого плагина, который раз в сутки создаёт резервную копию базы данных и сохраняет её в отдельной папке.

Основные шаги создания плагина для бэкапа

1. Создать плагин с хуком на cron для запуска задачи резервного копирования.

2. Использовать WPDownload_backup_database() для экспорта базы данных в файл .sql.

3. Хранить файлы в защищённой папке wp-content/uploads/wpdownload-backups.

4. Добавить функцию очистки старых бэкапов.

<?php
/*
Plugin Name: WPDownload Авто Бэкап
Description: Автоматическое резервное копирование базы данных WordPress.
Version: 1.0
Author: WPDownload
*/

register_activation_hook(__FILE__, 'wpdownload_activate_backup_cron');
register_deactivation_hook(__FILE__, 'wpdownload_deactivate_backup_cron');

function wpdownload_activate_backup_cron() {
    if (!wp_next_scheduled('wpdownload_daily_backup_event')) {
        wp_schedule_event(time(), 'daily', 'wpdownload_daily_backup_event');
    }
}

function wpdownload_deactivate_backup_cron() {
    $timestamp = wp_next_scheduled('wpdownload_daily_backup_event');
    wp_unschedule_event($timestamp, 'wpdownload_daily_backup_event');
}

add_action('wpdownload_daily_backup_event', 'wpdownload_backup_database');

function wpdownload_backup_database() {
    global $wpdb;
    $backup_dir = WP_CONTENT_DIR . '/uploads/wpdownload-backups';
    if (!file_exists($backup_dir)) {
        wp_mkdir_p($backup_dir);
    }

    $filename = '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 .= "DROP 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('esc_sql', array_values($row));
            $values = array_map(function($v) { return "'" . addslashes($v) . "'"; }, $values);
            $sql .= "INSERT INTO `$table_name` VALUES(" . implode(',', $values) . ");\n";
        }
        $sql .= "\n";
    }

    file_put_contents($filepath, $sql);

    // Очистка бэкапов старше 14 дней
    $files = glob($backup_dir . '/*.sql');
    $now = time();
    foreach ($files as $file) {
        if (is_file($file) && $now - filemtime($file) >= 14 * DAY_IN_SECONDS) {
            unlink($file);
        }
    }
}

// Добавим возможность запускать резервное копирование вручную из админки
add_action('admin_menu', function() {
    add_submenu_page('tools.php', 'WPDownload Backup', 'WPDownload Backup', 'manage_options', 'wpdownload-backup', 'wpdownload_backup_page');
});

function wpdownload_backup_page() {
    if (!current_user_can('manage_options')) {
        wp_die('Доступ запрещён');
    }

    if (isset($_POST['wpdownload_run_backup'])) {
        wpdownload_backup_database();
        echo '<div class="updated">Резервное копирование выполнено</div>';
    }

    echo '<h1>WPDownload Автоматическое резервное копирование</h1>';
    echo '<form method="post">';
    echo '<input type="hidden" name="wpdownload_run_backup" value="1" />';
    echo '<input type="submit" value="Создать резервную копию сейчас" class="button button-primary" />';
    echo '</form>';
}
?>

Дополнительные рекомендации по безопасности и хранению бэкапов

Создавая резервные копии, важно хранить их в безопасном месте, недоступном для посторонних. Лучше всего использовать облачные хранилища с двухфакторной аутентификацией или удалённые серверы.

Также рекомендуется регулярно проверять целостность бэкапов и тестировать восстановление сайта из них, чтобы избежать неприятных сюрпризов в критической ситуации.

Для более полного резервного копирования можно расширить приведённый пример, добавив копирование папки wp-content, которая содержит темы, плагины и медиафайлы.

Использование плагинов с поддержкой шифрования и сжатия бэкапов поможет снизить объём хранимых данных и повысит безопасность.

Заключение

Автоматическое резервное копирование — обязательный элемент управления WordPress-сайтом. WPDownload предлагает как использовать проверенные плагины, так и создать собственные решения под свои нужды. Важно настроить регулярное создание бэкапов, обеспечить их безопасное хранение и периодически проверять процесс восстановления.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше