Резервное копирование сайта на WordPress — обязательная часть поддержки любого проекта. Часто для создания бэкапа используют плагины или панели хостинга, но в некоторых случаях эффективнее и надежнее воспользоваться SSH-доступом. В этой статье мы подробно разберем, как с помощью SSH создавать полные резервные копии WordPress, включая базу данных и файлы, и приведем примеры скриптов для автоматизации процесса.
Что такое резервное копирование WordPress через SSH и зачем оно нужно
SSH (Secure Shell) — это протокол для безопасного удаленного доступа к серверу. Имея SSH-доступ, вы можете напрямую управлять файлами и базой данных сайта, что позволяет создавать резервные копии с максимальной гибкостью и без ограничений плагинов.
Использование SSH для бэкапов полезно в следующих случаях:
- Ограничения панели хостинга или плагинов по объему или времени выполнения.
- Необходимость полного контроля над процессом копирования.
- Резервное копирование больших сайтов с минимальной нагрузкой и возможностью автоматизации.
Кроме того, SSH-резервное копирование можно настроить с помощью cron-задач для регулярного автоматического создания копий.
Резервное копирование файлов WordPress через SSH
Для начала необходимо подключиться к серверу по SSH. В терминале или через программу PuTTY выполните команду (замените user и server на свои данные):
ssh user@serverПосле подключения переходим в корневую папку WordPress, обычно это public_html или www:
cd public_htmlЧтобы создать архив всех файлов сайта, используйте tar:
tar -czf wpbackup-files-$(date +%F).tar.gz .Эта команда упакует все содержимое текущей директории в сжатый архив с датой в имени, например, wpbackup-files-2024-06-15.tar.gz.
Для удобства архив можно переместить в отдельную папку для бэкапов:
mkdir -p backups
mv wpbackup-files-*.tar.gz backups/Советы по резервному копированию файлов
- Исключайте папки кэша, если их много и они не нужны в бэкапе:
tar --exclude='./wp-content/cache' -czf ... - Проверяйте права доступа к архивам, чтобы защитить резервные копии.
- Можно использовать
rsyncдля синхронизации бэкапов с внешним сервером.
Резервное копирование базы данных WordPress через SSH
Основная часть данных сайта хранится в базе данных MySQL или MariaDB. Для её резервного копирования через SSH используется утилита mysqldump. Сначала нужно узнать данные для подключения (хост, имя базы, пользователь, пароль), которые содержатся в wp-config.php.
cat wp-config.php | grep DB_NAME
define('DB_NAME', 'your_database_name');
# Аналогично для DB_USER и DB_PASSWORD
Чтобы создать дамп базы, выполните команду:
mysqldump -u your_db_user -p your_database_name > wpbackup-db-$(date +%F).sqlПосле ввода пароля будет создан файл с дампом базы данных, например, wpbackup-db-2024-06-15.sql.
Для удобства можно упаковать его в архив вместе с файлами или отдельно сжать:
gzip wpbackup-db-*.sqlАвтоматизация резервного копирования базы данных
Вы можете написать bash-скрипт, который будет создавать дамп базы и сохранять его с датой:
#!/bin/bash
DB_USER="your_db_user"
DB_PASS="your_password"
DB_NAME="your_database_name"
BACKUP_DIR="/home/user/backups"
mkdir -p $BACKUP_DIR
date=$(date +%F)
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/wpbackup-db-$date.sql
gzip $BACKUP_DIR/wpbackup-db-$date.sql
Такой скрипт можно запускать по расписанию через cron.
Пример комплексного скрипта резервного копирования WordPress через SSH
Ниже пример bash-скрипта, который создает резервные копии и файлов, и базы данных с датой, и сохраняет их в папке backups:
#!/bin/bash
# Настройки
WP_PATH="/var/www/html"
BACKUP_DIR="$WP_PATH/backups"
DB_USER="your_db_user"
DB_PASS="your_password"
DB_NAME="your_database_name"
# Создаем папку для бэкапов
mkdir -p $BACKUP_DIR
# Дата в формате ГГГГ-ММ-ДД
DATE=$(date +%F)
# Резервное копирование файлов
cd $WP_PATH
tar --exclude='./backups' -czf $BACKUP_DIR/wpbackup-files-$DATE.tar.gz .
# Резервное копирование базы данных
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/wpbackup-db-$DATE.sql
gzip $BACKUP_DIR/wpbackup-db-$DATE.sql
# Очистка старых бэкапов старше 30 дней
find $BACKUP_DIR -type f -mtime +30 -delete
# Сообщение о завершении
echo "Резервное копирование завершено: $DATE"
Сохраните скрипт, например, как wpbackup.sh, и сделайте его исполняемым:
chmod +x wpbackup.shДля автоматизации добавьте запуск в cron, например, каждую ночь в 2 часа:
0 2 * * * /path/to/wpbackup.shРезервное копирование WordPress через SSH и загрузка на удаленный сервер
Чтобы дополнительно обезопасить бэкапы, их можно автоматически копировать на удаленный сервер или в облако. Для этого удобно использовать rsync или scp.
Пример команды для копирования бэкапов на удаленный сервер по SSH:
rsync -avz -e ssh /var/www/html/backups/ user@backupserver:/path/to/backup/folder/Или просто копирование конкретного файла:
scp /var/www/html/backups/wpbackup-files-2024-06-15.tar.gz user@backupserver:/path/to/backup/folder/Эти команды можно добавить в скрипт резервного копирования, чтобы создавать и сразу выгружать копии.
Безопасность резервных копий и советы по хранению
Резервные копии содержат полный доступ ко всему сайту, включая пароли и пользовательские данные. Чтобы не допустить утечки:
- Храните бэкапы в отдельной папке с ограниченными правами доступа.
- Используйте шифрование архивов (например,
gpgилиzip -e). - Ограничивайте доступ к SSH и используйте ключи вместо паролей.
- Регулярно проверяйте целостность резервных копий.
Выводы и рекомендации
Использование SSH для резервного копирования WordPress — отличный способ получить контроль над процессом и избежать ограничений плагинов и панелей хостинга. При правильной настройке и автоматизации вы получите надежные и актуальные бэкапы, которые можно быстро восстановить.
Если вы хотите расширить функционал резервного копирования, обратите внимание на плагины, которые поддерживают интеграцию с внешними скриптами и удаленными хранилищами, например, Clearfy Pro из wpshop.ru.