cPanel и WHM из CLI: бэкап, перенос и восстановление аккаунта
Практический гайд по командной строке cPanel и WHM: как создать бэкап cpmove, перенести аккаунт между серверами, аккуратно его восстановить и разобраться, что пошло не так.

Вам нужно перенести аккаунт cPanel, восстановить сломанный или сделать бэкап, прежде чем трогать что-то страшное. CLI быстрее, чем прокликивать WHM. А ещё он очень хорошо умеет делать ровно то, что вы ему сказали.
В этом гайде — команды, которыми я пользуюсь чаще всего: pkgacct, restorepkg, scp и whmapi1.
Два пути, которые стоит держать в голове: скрипты лежат в /usr/local/cpanel/scripts, а файлы аккаунта обычно — в /home/USERNAME.
Если коротко
Создать полный архив аккаунта:
/usr/local/cpanel/scripts/pkgacct USERNAME /homeЭто создаст /home/cpmove-USERNAME.tar.gz.
Скопировать его на другой сервер (понадобится SSH-доступ):
scp /home/cpmove-USERNAME.tar.gz root@NEW_SERVER:/home/Восстановить его там:
/usr/local/cpanel/scripts/restorepkg /home/cpmove-USERNAME.tar.gzЗапускайте это от root. Эти команды меняют конфигурацию cPanel на уровне сервера, а не просто файлы в чьей-то домашней папке.
Сначала проверьте свободное место на диске
Не доверяйте --force вслепую
Что такое архив cpmove?
pkgacct создаёт переносимый архив cpmove. В нём файлы аккаунта, базы данных, почта, DNS-данные, SSL, cron-задачи и настройки cPanel.
Распаковывать его обычно не нужно. cPanel и так знает этот формат. Одним раскопочным проектом по тарболам меньше.
Бэкап одного аккаунта cPanel
Это та самая строчка с pkgacct из короткой версии. Оставьте явный /home в конце: так архив легко найти.
Чтобы посмотреть, что внутри, не распаковывая:
tar -tzf /home/cpmove-USERNAME.tar.gz | lessЧтобы сверить файл после копирования, посчитайте контрольную сумму на обоих серверах:
sha256sum /home/cpmove-USERNAME.tar.gzСТОП. Загадочный архив.Отличается 1 символ из 64. Этого достаточно.
Хэши должны совпасть. Если не совпадают — на этом и остановитесь. Не восстанавливайте загадочный архив.
Восстановление бэкапа cPanel
restorepkg принимает либо полный путь к архиву, как в короткой версии, либо имя пользователя. С полным путём понятнее. Восстановление по имени пользователя работает, если архив лежит в одном из путей, где cPanel его ищет, например в /home:
/usr/local/cpanel/scripts/restorepkg USERNAMEВосстановление существующего аккаунта
Тут осторожно. Если аккаунт уже существует, --force ведёт себя почти как --skipaccount: восстанавливает то, что может, а существующие данные на сервере оставляет.
/usr/local/cpanel/scripts/restorepkg --force /home/cpmove-USERNAME.tar.gzВ итоге может получиться запутанная смесь старых и восстановленных данных. Если нужна чистая замена — сделайте свежий бэкап, запланируйте простой и сначала протестируйте восстановление на staging-сервере.
Восстановление под другим именем пользователя
Используйте --newuser, если имя пользователя на целевом сервере должно поменяться:
/usr/local/cpanel/scripts/restorepkg --newuser NEWUSER /home/cpmove-OLDUSER.tar.gzНового имени ещё не должно существовать. Оно должно быть не длиннее 16 символов, а его первые восемь символов должны быть уникальными на сервере. Пользователи баз данных переименовываются автоматически не все, так что после восстановления проверьте конфигурацию приложения.
Где cPanel хранит файлы аккаунта
Большинство аккаунтов живут в /home, но сервер может использовать и другие home-разделы. Не думайте, что все аккаунты лежат в одном шкафу.
| Что | Типичный путь |
|---|---|
| Домашняя папка аккаунта | /home/USERNAME/ |
| Корень сайта | /home/USERNAME/public_html/ |
| Почта | /home/USERNAME/mail/ |
| Конфиг аккаунта | /var/cpanel/users/USERNAME |
| DNS-зоны | /var/named/ |
| Логи Apache | /usr/local/apache/logs/ |
Файл cpuser в /var/cpanel/users/USERNAME — это главный конфигурационный файл аккаунта. Прочитайте его, прежде чем редактировать. А ещё лучше — по возможности используйте WHM или задокументированный скрипт.
Полезные команды WHM и cPanel
Список аккаунтов:
whmapi1 listacctsПоказать один аккаунт:
whmapi1 accountsummary user=USERNAMEХотите JSON вместо YAML?
whmapi1 --output=jsonpretty accountsummary user=USERNAMEНа CloudLinux используйте полный путь к команде:
/usr/local/cpanel/bin/whmapi1 accountsummary user=USERNAMEДругие полезные скрипты:
| Задача | Команда |
|---|---|
| Создать архив аккаунта | /usr/local/cpanel/scripts/pkgacct USERNAME /home |
| Восстановить архив | /usr/local/cpanel/scripts/restorepkg ARCHIVE |
| Удалить аккаунт | /usr/local/cpanel/scripts/removeacct USERNAME |
| Пересобрать конфиг Apache | /usr/local/cpanel/scripts/rebuildhttpdconf |
| Перезапустить Apache | /usr/local/cpanel/scripts/restartsrv_httpd |
| Обновить привязки доменов | /usr/local/cpanel/scripts/updateuserdomains |
Используйте полный путь к скрипту. cPanel это рекомендует, даже если вы уже находитесь в /usr/local/cpanel/scripts.
Удаление аккаунта
Это удаляет данные аккаунта. Сначала сделайте бэкап.
/usr/local/cpanel/scripts/removeacct USERNAMEСкрипт попросит подтверждение. --force пропускает этот вопрос. Менее разрушительной команда от этого не становится.
Короткий чеклист восстановления
То, что команда завершилась, ещё не значит, что миграция завершилась.
- Создайте архив
cpmoveс помощьюpkgacct. - Скопируйте его на целевой сервер.
- Сверьте контрольную сумму на обоих серверах.
- Восстановите его через
restorepkg. - Проверьте сайт и подключение к базе данных. Упавшая таблица MySQL выглядит как сломанный сайт без внятной ошибки.
- Проверьте почту (SPF, DKIM и DMARC), DNS, SSL и cron-задачи.
- Не удаляйте архив, пока не убедитесь, что всё в порядке.
FAQ
Куда pkgacct сохраняет бэкап?
Если последним аргументом передать /home, архив окажется там. Без указания папки cPanel использует home-директорию, где больше всего свободного места.
Можно ли восстановить архив cpmove на другом сервере с cPanel?
Да. Архивы pkgacct для этого и нужны. Убедитесь, что на целевом сервере достаточно свободного места на диске и совместимая установка cPanel.
Переносит ли архив cpmove двухфакторную аутентификацию?
Нет. cPanel не переносит настройки 2FA аккаунта. Пользователю придётся настроить её заново на новом сервере.
Нужно ли распаковывать архив перед восстановлением?
Обычно нет. Отдайте архив напрямую restorepkg. Распаковывайте его, только если нужно посмотреть какой-то файл или вытащить небольшой кусок данных.
Источники
Комментарии
Комментарии живут в GitHub Discussions (через giscus), так что для участия нужен аккаунт GitHub.