Резервное копирование сайта на WordPress — важнейшая задача для любого администратора. Однако не менее важно не только создать резервную копию, но и грамотно организовать её удалённое хранение. В этой статье разберём, как автоматизировать процесс сохранения резервных копий WordPress на удалённые хранилища, чтобы обезопасить данные от потери в случае сбоев или взлома.
Почему важно использовать удалённое хранение резервных копий
Хранение резервных копий на том же сервере, где расположен сайт, — рискованный подход. При проблемах с сервером (аппаратных сбоях, взломах, ошибках хостинга) все данные могут быть утеряны одновременно с сайтом.
Удалённое хранение резервных копий позволяет:
- Обеспечить безопасность данных вне основного сервера
- Автоматизировать процесс резервирования без ручного вмешательства
- Легко восстанавливать сайт даже при полном выходе сайта из строя
К популярным удалённым хранилищам относятся облачные сервисы (Google Drive, Dropbox, Яндекс.Диск), FTP/SFTP-серверы, Amazon S3 и другие.
Выбор плагина для автоматизации резервного копирования с удалённым хранением
Для автоматизации процесса удобнее всего использовать специализированные плагины. Рассмотрим несколько популярных вариантов, которые позволяют сохранять резервные копии на удалённые хранилища с минимальной настройкой.
1. UpdraftPlus
Один из самых популярных плагинов для бэкапов. Позволяет создавать полные, инкрементальные копии сайта и базы данных, а также сохранять их на удалённые сервисы.
- Поддерживает Google Drive, Dropbox, Amazon S3, FTP и другие
- Имеет функцию расписания автоматических бэкапов
- Простой интерфейс и расширенные настройки
2. BackWPup
Ещё один мощный плагин резервного копирования с поддержкой удалённых хранилищ. Позволяет сохранять бэкапы на FTP, Dropbox, Amazon S3, Microsoft Azure и другие сервисы.
- Возможность создавать резервные копии базы данных и файлов
- Настраиваемое расписание
- Логирование и уведомления по почте
3. WPvivid Backup Plugin
Молодой, но функциональный плагин с поддержкой удалённого хранения и миграций сайта.
- Поддержка Google Drive, Dropbox, FTP, SFTP
- Интуитивно понятный интерфейс
- Автоматические бэкапы с гибкой настройкой
Пример автоматизации резервного копирования и загрузки на FTP с помощью WPBackup_Custom
Если вы хотите реализовать кастомное решение на PHP для автоматического создания резервных копий и сохранения их на FTP, можно использовать пример ниже.
Шаг 1. Создание резервной копии базы данных
function wpbackupru_create_db_backup() {
global $wpdb;
$backup_file = WP_CONTENT_DIR . '/backups/db_backup_' . date('Y-m-d_H-i-s') . '.sql';
$command = "mysqldump --user=" . DB_USER . " --password=" . DB_PASSWORD . " --host=" . DB_HOST . " " . DB_NAME . " > " . escapeshellarg($backup_file);
exec($command, $output, $return_var);
if ($return_var !== 0) {
error_log('WPBackup.ru: Ошибка создания резервной копии базы данных');
return false;
}
return $backup_file;
}
Этот код создает дамп базы данных в папке wp-content/backups с временной меткой.
Шаг 2. Загрузка файла резервной копии на FTP
function wpbackupru_upload_backup_to_ftp($file_path) {
$ftp_server = 'ftp.example.com';
$ftp_user = 'username';
$ftp_pass = 'password';
// Устанавливаем соединение
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
error_log('WPBackup.ru: Не удалось подключиться к FTP серверу');
return false;
}
// Входим в систему
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if (!$login_result) {
error_log('WPBackup.ru: Ошибка авторизации на FTP сервере');
ftp_close($conn_id);
return false;
}
// Включаем пассивный режим
ftp_pasv($conn_id, true);
$remote_file = '/backups/' . basename($file_path);
// Загружаем файл
$upload = ftp_put($conn_id, $remote_file, $file_path, FTP_BINARY);
if (!$upload) {
error_log('WPBackup.ru: Не удалось загрузить файл на FTP сервер');
ftp_close($conn_id);
return false;
}
ftp_close($conn_id);
return true;
}
Шаг 3. Автоматизация с WP-Cron
Подключим автоматический запуск резервного копирования и загрузки на FTP раз в сутки.
add_action('wpbackupru_daily_backup_event', 'wpbackupru_perform_backup');
function wpbackupru_perform_backup() {
$backup_file = wpbackupru_create_db_backup();
if ($backup_file) {
wpbackupru_upload_backup_to_ftp($backup_file);
}
}
// Регистрируем событие при активации темы или плагина
if (!wp_next_scheduled('wpbackupru_daily_backup_event')) {
wp_schedule_event(time(), 'daily', 'wpbackupru_daily_backup_event');
}
Этот простой код создаст дамп базы данных и загрузит его на FTP-сервер автоматически каждую ночь.
Рекомендации по безопасности при удалённом хранении резервных копий
При использовании удалённых хранилищ очень важно обеспечить безопасность резервных копий. Вот несколько правил, которые стоит соблюдать:
- Используйте защищённые протоколы: SFTP вместо FTP, HTTPS для облачных сервисов
- Храните резервные копии зашифрованными. Для этого можно использовать GPG или встроенные функции плагинов
- Ограничьте доступ к резервным копиям, используя права доступа и пароли
- Регулярно проверяйте целостность и возможность восстановления из бэкапов
Для шифрования резервных копий можно использовать пример с GPG:
function wpbackupru_encrypt_backup($file_path, $gpg_recipient) {
$encrypted_file = $file_path . '.gpg';
$command = "gpg --yes --output " . escapeshellarg($encrypted_file) . " --encrypt --recipient " . escapeshellarg($gpg_recipient) . " " . escapeshellarg($file_path);
exec($command, $output, $return_var);
if ($return_var === 0) {
return $encrypted_file;
}
return false;
}
Заключение
Автоматизация удалённого хранения резервных копий — обязательный шаг к надёжной защите вашего WordPress-сайта. Используя проверенные плагины или собственные решения с WP-Cron и FTP/облачными сервисами, вы минимизируете риск потери данных и сможете быстро восстановить сайт в случае проблем.
Если хотите подробнее ознакомиться с плагинами и инструментами для резервного копирования, советуем посетить wpshop.ru — там много полезных решений для WordPress.