Зачем нужно автоматическое резервное копирование WordPress
Резервное копирование — это основа безопасности любого сайта, особенно на WordPress, где регулярные обновления и сторонние плагины могут привести к непредвиденным сбоям. Автоматизация процесса помогает не забыть сделать бэкап и быстро восстановить сайт после ошибок, взлома или технических сбоев.
Ручное создание резервных копий требует времени и внимания, а значит риск забыть сделать копию возрастает. Автоматические решения позволяют настроить частоту создания бэкапов, место хранения, уведомления и другие параметры.
В этой статье мы рассмотрим проверенные плагины и пример собственного PHP-скрипта для автоматического создания резервных копий с отправкой на удаленный сервер или облачное хранилище.
Лучшие плагины для автоматического резервного копирования WordPress
UpdraftPlus — универсальное и популярное решение
UpdraftPlus позволяет легко настроить периодические бэкапы с сохранением на облачные сервисы (Google Drive, Dropbox, Amazon S3 и др.) или на сервер. Есть возможность восстановления сайта прямо из панели управления WordPress.
- Простой интерфейс и гибкие настройки расписания
- Поддержка инкрементальных бэкапов в Pro-версии
- Отправка уведомлений на email после завершения
Настроить автоматическое резервное копирование с помощью UpdraftPlus очень просто: в разделе Настройки > UpdraftPlus Backups выбираем расписание и место хранения.
BackWPup — мощный инструмент для комплексных бэкапов
BackWPup позволяет создавать резервные копии файлов, базы данных и экспортировать их в ZIP-архивы. Можно настраивать автоматическое выполнение заданий по расписанию.
- Поддержка отправки бэкапов на FTP, Dropbox, S3, email
- Оптимизация и проверка базы данных
- Журнал выполнения заданий для диагностики
Для автоматизации достаточно создать задание в меню BackWPup > Add New Job и задать расписание.
Как создать собственный PHP-скрипт для автоматического бэкапа WordPress
Если вы хотите гибко контролировать процесс и интегрировать резервное копирование в собственные решения, можно написать скрипт на PHP, который будет создавать архив файлов сайта и экспортировать базу данных.
Ниже пример функции wpfinder_create_backup(), которая создает резервную копию сайта и сохраняет ее в папку wp-content/backups/. Для автоматического запуска скрипта можно настроить cron-задачу на сервере.
<?php
function wpfinder_create_backup() {
$backup_dir = WP_CONTENT_DIR . '/backups/';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$date = date('Y-m-d_H-i-s');
$zip_file = $backup_dir . 'backup_' . $date . '.zip';
$zip = new ZipArchive();
if ($zip->open($zip_file, ZipArchive::CREATE) !== TRUE) {
error_log('WPFinder Backup: Не удалось создать архив');
return false;
}
// Добавляем файлы темы и wp-content/uploads
$paths = [
WP_CONTENT_DIR . '/themes/',
WP_CONTENT_DIR . '/uploads/'
];
foreach ($paths as $path) {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach ($files as $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(WP_CONTENT_DIR) + 1);
$zip->addFile($filePath, $relativePath);
}
}
}
// Экспорт базы данных
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
$sql_dump = '';
foreach ($tables as $table) {
$table_name = $table[0];
$create_table = $wpdb->get_row("SHOW CREATE TABLE `" . $table_name . "`", ARRAY_N);
$sql_dump .= "DROP TABLE IF EXISTS `$table_name`;
" . $create_table[1] . ";
";
$rows = $wpdb->get_results("SELECT * FROM `$table_name`", ARRAY_A);
foreach ($rows as $row) {
$values = array_map(function($val) use ($wpdb) {
return is_null($val) ? 'NULL' : $wpdb->_real_escape($val);
}, array_values($row));
$sql_dump .= "INSERT INTO `$table_name` VALUES('" . implode("','", $values) . "');
";
}
}
$zip->addFromString('database_backup.sql', $sql_dump);
$zip->close();
return $zip_file;
}
?>Этот скрипт можно добавить в файл темы или в отдельный плагин. Главное — обеспечить безопасность и права доступа.
Настройка cron для автоматического запуска
Чтобы запускать резервное копирование регулярно, добавьте в cron команду, вызывающую этот скрипт. Например, если скрипт доступен по URL https://example.com/wp-content/plugins/wpfinder-backup/backup.php, можно использовать команду curl:
0 3 * * * /usr/bin/curl -s https://example.com/wp-content/plugins/wpfinder-backup/backup.phpИли если скрипт расположен локально, вызовите PHP напрямую:
0 3 * * * /usr/bin/php /path-to-site/wp-content/plugins/wpfinder-backup/backup.phpСоветы по безопасному хранению резервных копий
Важно не только создавать резервные копии, но и хранить их в надежном месте вне основного сервера. Вот рекомендации:
- Храните бэкапы на удаленных облачных сервисах, таких как Google Drive, Dropbox, Amazon S3.
- Ограничьте доступ к папкам с резервными копиями по IP или паролем.
- Регулярно проверяйте целостность архивов и возможность восстановления.
- Удаляйте старые резервные копии после определенного срока, чтобы не занимать много места.
Плагины UpdraftPlus и BackWPup поддерживают интеграцию с облачными хранилищами и автоматическое удаление старых копий.
Выводы и рекомендации по автоматизации резервного копирования
Автоматическое резервное копирование — обязательный элемент надежной работы сайта на WordPress. Используйте проверенные плагины для быстрого и удобного решения, если не требуется глубокая кастомизация.
Если же вы хотите полный контроль, можно написать собственный PHP-скрипт, который будет создавать архивы с файлами и базой данных, и запускать его по расписанию через cron. Такой подход требует опыта и тщательной настройки безопасности.
Независимо от выбранного способа, регулярно проверяйте резервные копии и тестируйте восстановление сайта, чтобы быть уверенным в надежности защиты.