Резервное копирование сайта — одна из важнейших задач для каждого владельца WordPress проекта. Особенно это актуально для сайтов с большим количеством заказов, клиентов и контента, как на wporder.ru. В этой статье разберём, как настроить автоматическое создание резервных копий WordPress с помощью встроенных средств PHP и популярных плагинов, а также рассмотрим примеры кода для кастомных решений.
Почему важно настроить автоматическое резервное копирование WordPress
Резервные копии помогают быстро восстановить сайт при сбоях, ошибках обновлений, взломах или человеческих ошибках. Ручное создание копий неудобно и забывается, поэтому автоматизация этого процесса снижает риски потери данных.
Автоматическое резервное копирование позволяет:
- Хранить несколько копий для восстановления на разные даты;
- Экономить время и ресурсы, исключая ручной труд;
- Интегрировать процесс в существующие рабочие процессы и сервисы хранения;
- Получать уведомления о статусе копирования.
Обзор популярных плагинов для автоматического резервного копирования WordPress
Для автоматизации резервного копирования существуют проверенные плагины, которые просто настраиваются и поддерживают различные хранилища.
UpdraftPlus
Один из самых популярных бесплатных плагинов с поддержкой облачных хранилищ (Google Drive, Dropbox, Amazon S3 и др.). Позволяет планировать копии, восстанавливать сайт из бэкапов и шифровать данные.
BackWPup
Позволяет создавать полные резервные копии, включая базу данных и файлы. Можно автоматически загружать копии на FTP или облачные сервисы.
WPvivid Backup
Современный плагин с удобным интерфейсом и функцией миграции сайта. Поддерживает автоматическое резервное копирование по расписанию.
Автоматическое резервное копирование с помощью PHP: пример реализации
Если вам необходим кастомный скрипт для резервного копирования, который можно интегрировать в вашу систему, рассмотрим пример на PHP. Скрипт создаст архив файлов сайта и экспортирует базу данных.
Для архивации используем ZipArchive, для дампа базы — exec с вызовом mysqldump (требуется доступ к серверу с консолью).
Пример функции для резервного копирования:
function wporder_backup_create() {
$backup_dir = __DIR__ . '/backups';
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
}
$date = date('Y-m-d_H-i-s');
$zip_path = "$backup_dir/backup_$date.zip";
$zip = new ZipArchive();
if ($zip->open($zip_path, ZipArchive::CREATE) !== true) {
return false;
}
// Добавляем файлы сайта
$path = __DIR__;
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach ($files as $name => $file) {
if (!$file->isDir()) {
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($path) + 1);
// Исключаем папку backups
if (strpos($relativePath, 'backups') === 0) continue;
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
// Экспорт базы данных
$db_host = DB_HOST;
$db_name = DB_NAME;
$db_user = DB_USER;
$db_pass = DB_PASSWORD;
$dump_file = "$backup_dir/db_backup_$date.sql";
$command = "mysqldump --host=$db_host --user=$db_user --password=$db_pass $db_name > $dump_file";
exec($command, $output, $result_code);
if ($result_code !== 0) {
return false;
}
return true;
}Этот код можно запускать по cron, чтобы создавать резервные копии автоматически. Не забудьте настроить права на папку backups и проверить доступ к mysqldump.
Интеграция резервного копирования с облачными сервисами
Для надёжного хранения рекомендуем использовать облачные хранилища. Многие плагины поддерживают интеграцию с Google Drive, Dropbox, Amazon S3. Также можно самостоятельно загружать созданные архивы с помощью PHP SDK соответствующих сервисов.
Пример загрузки архивов в Google Drive с помощью Google API PHP Client:
require_once 'vendor/autoload.php';
function wporder_upload_to_gdrive($file_path) {
$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->addScope(Google_Service_Drive::DRIVE_FILE);
$service = new Google_Service_Drive($client);
$fileMetadata = new Google_Service_Drive_DriveFile([
'name' => basename($file_path)
]);
$content = file_get_contents($file_path);
$file = $service->files->create($fileMetadata, [
'data' => $content,
'mimeType' => 'application/zip',
'uploadType' => 'multipart'
]);
return $file->id;
}Такой подход позволяет полностью автоматизировать создание и хранение резервных копий.
Рекомендации по безопасности и хранению резервных копий
При создании резервных копий важно:
- Хранить копии вне основного сервера — облако или удалённый сервер;
- Шифровать копии, если в них есть чувствительные данные;
- Ограничивать доступ к папкам с бэкапами;
- Регулярно проверять целостность и возможность восстановления из копий.
Для повышения безопасности рекомендуем использовать плагин Clearfy Pro с функцией защиты важных директорий и управления правами доступа.