Перейти к содержимому
Alex Kovalev

cPanel и WHM из CLI: бэкап, перенос и восстановление аккаунта

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

Guide4мин чтения
Серверная стойка с сетевыми кабелями в дата-центре
Серверная стойка с сетевыми кабелями в дата-центре

Вам нужно перенести аккаунт cPanel, восстановить сломанный или сделать бэкап, прежде чем трогать что-то страшное. CLI быстрее, чем прокликивать WHM. А ещё он очень хорошо умеет делать ровно то, что вы ему сказали.

В этом гайде — команды, которыми я пользуюсь чаще всего: pkgacct, restorepkg, scp и whmapi1.

Два пути, которые стоит держать в голове: скрипты лежат в /usr/local/cpanel/scripts, а файлы аккаунта обычно — в /home/USERNAME.

Если коротко

Создать полный архив аккаунта:

Terminal window
/usr/local/cpanel/scripts/pkgacct USERNAME /home

Это создаст /home/cpmove-USERNAME.tar.gz.

Скопировать его на другой сервер (понадобится SSH-доступ):

Terminal window
scp /home/cpmove-USERNAME.tar.gz root@NEW_SERVER:/home/

Восстановить его там:

Terminal window
/usr/local/cpanel/scripts/restorepkg /home/cpmove-USERNAME.tar.gz

Запускайте это от root. Эти команды меняют конфигурацию cPanel на уровне сервера, а не просто файлы в чьей-то домашней папке.

Что такое архив cpmove?

pkgacct создаёт переносимый архив cpmove. В нём файлы аккаунта, базы данных, почта, DNS-данные, SSL, cron-задачи и настройки cPanel.

Распаковывать его обычно не нужно. cPanel и так знает этот формат. Одним раскопочным проектом по тарболам меньше.

Бэкап одного аккаунта cPanel

Это та самая строчка с pkgacct из короткой версии. Оставьте явный /home в конце: так архив легко найти.

Чтобы посмотреть, что внутри, не распаковывая:

Terminal window
tar -tzf /home/cpmove-USERNAME.tar.gz | less

Чтобы сверить файл после копирования, посчитайте контрольную сумму на обоих серверах:

Terminal window
sha256sum /home/cpmove-USERNAME.tar.gz
Сравнить хэши

СТОП. Загадочный архив.Отличается 1 символ из 64. Этого достаточно.

Ничего не покидает ваш браузер. Это сравнение строк, а не магия.

Хэши должны совпасть. Если не совпадают — на этом и остановитесь. Не восстанавливайте загадочный архив.

Восстановление бэкапа cPanel

restorepkg принимает либо полный путь к архиву, как в короткой версии, либо имя пользователя. С полным путём понятнее. Восстановление по имени пользователя работает, если архив лежит в одном из путей, где cPanel его ищет, например в /home:

Terminal window
/usr/local/cpanel/scripts/restorepkg USERNAME

Восстановление существующего аккаунта

Тут осторожно. Если аккаунт уже существует, --force ведёт себя почти как --skipaccount: восстанавливает то, что может, а существующие данные на сервере оставляет.

Terminal window
/usr/local/cpanel/scripts/restorepkg --force /home/cpmove-USERNAME.tar.gz

В итоге может получиться запутанная смесь старых и восстановленных данных. Если нужна чистая замена — сделайте свежий бэкап, запланируйте простой и сначала протестируйте восстановление на staging-сервере.

Восстановление под другим именем пользователя

Используйте --newuser, если имя пользователя на целевом сервере должно поменяться:

Terminal window
/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

Список аккаунтов:

Terminal window
whmapi1 listaccts

Показать один аккаунт:

Terminal window
whmapi1 accountsummary user=USERNAME

Хотите JSON вместо YAML?

Terminal window
whmapi1 --output=jsonpretty accountsummary user=USERNAME

На CloudLinux используйте полный путь к команде:

Terminal window
/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.

Удаление аккаунта

Это удаляет данные аккаунта. Сначала сделайте бэкап.

Terminal window
/usr/local/cpanel/scripts/removeacct USERNAME

Скрипт попросит подтверждение. --force пропускает этот вопрос. Менее разрушительной команда от этого не становится.

Короткий чеклист восстановления

То, что команда завершилась, ещё не значит, что миграция завершилась.

  1. Создайте архив cpmove с помощью pkgacct.
  2. Скопируйте его на целевой сервер.
  3. Сверьте контрольную сумму на обоих серверах.
  4. Восстановите его через restorepkg.
  5. Проверьте сайт и подключение к базе данных. Упавшая таблица MySQL выглядит как сломанный сайт без внятной ошибки.
  6. Проверьте почту (SPF, DKIM и DMARC), DNS, SSL и cron-задачи.
  7. Не удаляйте архив, пока не убедитесь, что всё в порядке.

FAQ

Куда pkgacct сохраняет бэкап?

Если последним аргументом передать /home, архив окажется там. Без указания папки cPanel использует home-директорию, где больше всего свободного места.

Можно ли восстановить архив cpmove на другом сервере с cPanel?

Да. Архивы pkgacct для этого и нужны. Убедитесь, что на целевом сервере достаточно свободного места на диске и совместимая установка cPanel.

Переносит ли архив cpmove двухфакторную аутентификацию?

Нет. cPanel не переносит настройки 2FA аккаунта. Пользователю придётся настроить её заново на новом сервере.

Нужно ли распаковывать архив перед восстановлением?

Обычно нет. Отдайте архив напрямую restorepkg. Распаковывайте его, только если нужно посмотреть какой-то файл или вытащить небольшой кусок данных.

Источники

Комментарии

Комментарии живут в GitHub Discussions (через giscus), так что для участия нужен аккаунт GitHub.

Чирикну, когда выйдет новый пост

Одно письмо на каждый новый пост, обычно по пятницам. Больше ничего, а отписаться можно в любой момент.

Удобнее читать в RSS-ридере? Есть RSS-лента.

© Alex Kovalev. Все права защищены. · Политика конфиденциальности