Резервное копирование сайта — одна из важнейших задач для любого владельца WordPress-проекта. Большинство пользователей устанавливают плагины для бэкапов, но это не всегда оптимальный вариант — плагины могут нагружать сайт, конфликтовать с другими расширениями или требовать дополнительных настроек. В этой статье разберём, как создать автоматические резервные копии WordPress без плагинов с помощью простых скриптов и стандартных средств хостинга.
Почему важно делать резервные копии WordPress
Резервные копии помогают быстро восстановить сайт после ошибок, взломов, сбоев сервера или человеческих ошибок. Даже если у вас надёжный хостинг, никогда нельзя быть полностью застрахованным от потери данных. Автоматизация процесса резервного копирования значительно снижает риски и экономит время.
Основные объекты для копирования в WordPress — это база данных и файлы сайта (темы, плагины, загрузки и системные файлы).
Создание резервной копии базы данных WordPress с помощью PHP и WP-CLI
Самый простой способ сделать дамп базы данных — использовать WP-CLI, если у вас есть к нему доступ на сервере. Команда:
wp db export /путь/к/папке/backup-$(date +%F).sql
создаст дамп базы в указанной папке с датой в имени файла.
Если WP-CLI нет, можно сделать экспорт базы через PHP-скрипт, который запускается по cron. Пример такого скрипта:
<?php
// wphost_backup_db.php
// Настройки подключения к базе
$host = 'localhost';
$user = 'wp_user';
$password = 'wp_password';
$dbname = 'wp_database';
// Имя файла резервной копии с датой
$backupFile = __DIR__ . '/backup/db_backup_' . date('Y-m-d_H-i-s') . '.sql';
// Создаем папку, если нет
if (!is_dir(__DIR__ . '/backup')) {
mkdir(__DIR__ . '/backup', 0755, true);
}
// Команда для экспорта базы
$command = "mysqldump --host=$host --user=$user --password=$password $dbname > $backupFile";
exec($command, $output, $return_var);
if ($return_var === 0) {
echo "Резервная копия базы создана: $backupFile";
} else {
echo "Ошибка при создании бэкапа базы";
}
?>
Данный скрипт нужно запускать регулярно через планировщик задач cron, например, раз в сутки или неделю.
Резервное копирование файлов WordPress с помощью rsync и tar
Для копирования файлов сайта удобнее использовать инструменты командной строки — rsync или tar. Вот пример команды tar для архивации файлов сайта:
tar -czf /путь/к/backup/wp_files_$(date +%F).tar.gz /путь/к/вашему/wordpress
Эту команду тоже можно запускать по расписанию через cron.
Если у вас есть SSH-доступ к серверу, rsync позволит делать инкрементные копии, экономя место и время:
rsync -av --delete /путь/к/wordpress/ /путь/к/backup/wordpress_backup_$(date +%F)/
Как настроить cron для автоматического запуска скриптов резервного копирования
Чтобы автоматизировать процесс, нужно добавить задания в cron. Для редактирования cron используйте команду:
crontab -e
Пример строки для ежедневного запуска в 3 часа ночи PHP-скрипта резервного копирования базы:
0 3 * * * /usr/bin/php /путь/к/wphost_backup_db.php >/dev/null 2>&1
Аналогично можно добавить команду для архивации файлов. Важно, чтобы у пользователя, под которым запускается cron, были права на выполнение скриптов и доступ к нужным каталогам.
Пример объединённого скрипта резервного копирования базы и файлов
Ниже пример простого PHP-скрипта, который создаёт резервные копии базы и файлов, помещая их в папку backup:
<?php
// wphost_backup_all.php
$backupDir = __DIR__ . '/backup';
if (!is_dir($backupDir)) {
mkdir($backupDir, 0755, true);
}
// Параметры базы данных
$host = 'localhost';
$user = 'wp_user';
$password = 'wp_password';
$dbname = 'wp_database';
// Создаем дамп базы
$dbBackupFile = $backupDir . '/db_backup_' . date('Y-m-d_H-i-s') . '.sql';
$dumpCommand = "mysqldump --host=$host --user=$user --password=$password $dbname > $dbBackupFile";
exec($dumpCommand, $output, $returnVar);
if ($returnVar !== 0) {
echo "Ошибка при создании резервной копии базы\n";
exit(1);
}
// Архивируем файлы WordPress
$wpPath = '/путь/к/wordpress';
$filesBackupFile = $backupDir . '/wp_files_' . date('Y-m-d_H-i-s') . '.tar.gz';
$tarCommand = "tar -czf $filesBackupFile -C $wpPath .";
exec($tarCommand, $output, $returnVar);
if ($returnVar !== 0) {
echo "Ошибка при создании архива файлов\n";
exit(1);
}
echo "Резервные копии успешно созданы: \n$dbBackupFile\n$filesBackupFile";
?>
Дополнительные рекомендации по безопасности и хранению бэкапов
Храните резервные копии не на том же сервере, где размещён сайт, чтобы избежать потери данных при сбоях хостинга. Можно настроить автоматическую отправку бэкапов на удалённый сервер по FTP/SFTP или в облачное хранилище (например, AWS S3, Google Drive). Для этого подходят отдельные скрипты или утилиты, например, rclone.
Периодически проверяйте целостность и возможность восстановления из резервных копий.
Для удобства и расширенных функций вы можете рассмотреть плагины, такие как Clearfy Pro, которые оптимизируют управление сайтом и помогают с резервным копированием.
Итоги и практические советы
- Используйте WP-CLI или mysqldump для создания дампа базы данных.
- Архивируйте файлы WordPress с помощью tar или rsync.
- Автоматизируйте запуск скриптов через cron для регулярного бэкапа.
- Храните копии на удалённых серверах или в облаке для безопасности.
- Проверяйте резервные копии и тестируйте восстановление.
Создание автоматических резервных копий WordPress без плагинов — это реальная и эффективная задача, которую можно решить с помощью базовых инструментов сервера. Такой подход позволит вам не зависеть от сторонних расширений и обеспечить надёжную защиту вашего сайта.