Резервное копирование — ключевой элемент поддержки любого сайта на WordPress. Особенно важно автоматизировать процесс, чтобы не зависеть от ручных процедур и иметь актуальную копию данных на случай сбоев, взломов или ошибок. В этой статье мы подробно разберём, как реализовать автоматическое создание бэкапов WordPress с помощью собственного PHP-кода, а также рассмотрим лучшие плагины, которые помогут упростить задачу.
Почему важно автоматизировать резервное копирование WordPress
Регулярные резервные копии сайта спасают от потери данных и помогут быстро восстановить работоспособность. Многие хостинги предлагают собственные решения, но они не всегда удобны или гибки. Автоматизация позволяет:
- Не забывать делать бэкапы;
- Сохранять копии по расписанию;
- Сохранять все ключевые данные: файлы, базу данных, настройки;
- Экономить время и силы администратора.
Понимание структуры WordPress и умение использовать PHP для создания бэкапов даст полный контроль над процессом и возможность кастомизации под любые требования.
Как работает резервное копирование WordPress
Для полноценного бэкапа нужно сохранить:
- Все файлы WordPress, включая темы, плагины, загрузки;
- Базу данных, где хранится весь контент, настройки и метаданные.
Самый простой способ — создать архив файлов и экспортировать базу данных в SQL-файл. Автоматизация состоит в том, чтобы этот процесс запускался по расписанию, например, с помощью wp-cron.
Создание простого скрипта автоматического бэкапа на PHP для WordPress
Ниже пример функции для wpfront, которая создаёт резервную копию базы данных и архива файлов, сохраняя их в папку wp-content/backups. Этот код можно добавить в файл functions.php вашей темы или создать отдельный плагин.
function wpfront_create_backup() {
$upload_dir = wp_upload_dir();
$backup_dir = WP_CONTENT_DIR . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
// Создаём имя файла с датой
$date = date('Y-m-d_H-i-s');
$db_backup_file = $backup_dir . "/db_backup_{$date}.sql";
$files_backup_file = $backup_dir . "/files_backup_{$date}.zip";
// Резервное копирование базы данных
global $wpdb;
$tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
$sql_dump = '';
foreach ($tables as $table) {
$table_name = $table[0];
// Создаём DROP TABLE
$sql_dump .= "DROP TABLE IF EXISTS `$table_name`;\n";
// Создаём CREATE TABLE
$create_table = $wpdb->get_row("SHOW CREATE TABLE $table_name", ARRAY_N);
$sql_dump .= $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($value) { return is_null($value) ? 'NULL' : "'" . addslashes($value) . "'"; }, $values);
$sql_dump .= "INSERT INTO `$table_name` VALUES (" . implode(',', $values) . ");\n";
}
$sql_dump .= "\n";
}
file_put_contents($db_backup_file, $sql_dump);
// Создание архива файлов
$zip = new ZipArchive();
if ($zip->open($files_backup_file, ZipArchive::CREATE) === TRUE) {
$rootPath = realpath(ABSPATH);
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
// Исключаем папку backups чтобы не заархивировать бэкапы в себя
if (strpos($relativePath, 'wp-content/backups') === false) {
$zip->addFile($filePath, $relativePath);
}
}
}
$zip->close();
}
}
// Запускаем резервное копирование по расписанию
if (!wp_next_scheduled('wpfront_daily_backup')) {
wp_schedule_event(time(), 'daily', 'wpfront_daily_backup');
}
add_action('wpfront_daily_backup', 'wpfront_create_backup');
Этот скрипт делает следующее:
- Создаёт папку для бэкапов, если её нет;
- Делает SQL-дамп всех таблиц базы данных;
- Архивирует файлы сайта в ZIP, исключая папку с бэкапами;
- Запускает задачу ежедневно с помощью wp-cron.
Использование плагинов для автоматического резервного копирования
Если не хочется писать код, можно использовать проверенные плагины. Вот несколько рекомендуемых решений:
1. UpdraftPlus
Один из самых популярных плагинов для резервного копирования. Позволяет делать бэкапы базы и файлов по расписанию, сохранять копии на облачные сервисы (Google Drive, Dropbox, Яндекс.Диск и др.). Имеет удобный интерфейс и множество настроек.
2. BackWPup
Ещё один мощный инструмент с поддержкой автоматического экспорта базы данных, файлов и отправкой архивов на FTP или облако. Бесплатная версия покрывает большинство задач.
3. WPvivid Backup
Простой в использовании плагин с функциями автоматического бэкапа, миграции сайта и восстановления. Позволяет планировать задачи и сохранять архивы локально или в облаке.
Все эти плагины можно скачать с wpshop.ru. Они регулярно обновляются и совместимы с последними версиями WordPress.
Как интегрировать автоматические бэкапы с отправкой на email или облако
Самые простые скрипты не умеют отправлять архивы автоматически. Для этого можно добавить следующий код, который будет отправлять SQL-дамп и ZIP архив на указанный email после создания бэкапа:
function wpfront_send_backup_email($db_file, $zip_file) {
$to = 'your-email@example.com';
$subject = 'Резервная копия сайта WordPress';
$message = 'Во вложении резервные копии базы данных и файлов сайта.';
$headers = array('Content-Type: text/html; charset=UTF-8');
$attachments = array($db_file, $zip_file);
wp_mail($to, $subject, $message, $headers, $attachments);
}
// Вызов после создания файлов
// wpfront_send_backup_email($db_backup_file, $files_backup_file);
Для автоматизации вызова этой функции добавьте вызов внутри функции wpfront_create_backup() после создания файлов.
Советы по безопасности и хранению бэкапов
При работе с резервными копиями важно учитывать безопасность:
- Не храните бэкапы в папках, доступных из браузера — лучше в защищённых директориях или на внешних сервисах;
- Шифруйте конфиденциальные данные, если планируете отправлять по email или сохранять в облаке;
- Регулярно проверяйте, что бэкапы создаются корректно и файлы не повреждены;
- Организуйте ротацию бэкапов — удаляйте старые копии, чтобы не занимать много места.
Выводы по автоматическому резервному копированию WordPress
Автоматизация бэкапов — обязательный шаг для надёжной работы сайта. Если вы готовы писать код, пример с PHP и wp-cron позволит гибко настроить процесс под свои задачи. Если хотите быстро и просто — выбирайте надёжные плагины, такие как UpdraftPlus или BackWPup. Главное — не забывайте регулярно проверять и тестировать восстановление, чтобы избежать неприятных сюрпризов.
Подробнее о плагинах и инструментах можно узнать на wpshop.ru.