Transferência de contas grandes entre servidores CPANEL

No exato momento em que escrevo esse texto, estou passando o seguinte perrengue:
Preciso transferir uma conta de um servidor CPANEL para outro servidor CPANEL, porém esta conta já chega a quase 100Gb de dados. Para piorar o cenário, o servidor de origem aparentemente tem um HD SATA e o backup automático do arquivo “full” de transferência gerado pelo CPANEL na lá interface de administração da conta já está rodando a 2 horas e 19 minutos.

Isso mesmo, fucking 2:19 horas. E não tenho idéia de quanto tempo esse backup de arquivo ainda vai levar.
Quais seriam os próximos passos depois disso?

  • Mandar esse arquivo pro servidor de destino;
  • Criar a conta de destino no WHM;
  • Importar o arquivo de Full Backup através da interface de administração gráfica.
  • Transferir o DNS do domínio apontando pro servidor novo.

Qual o problema disso? Desde que o backup começou, em algum momento a compactação vai passar pelas contas de e-mail, compactando o conteúdo dos diretórios e não volta mais ai… ou seja, vários minutos e que e-mails que chegam nessa conta não estarão disponíveis no servidor de destino.

Não contente com isso além de pensar e Google, cheguei a seguinte conclusão: E se eu deixasse os e-mails (responsáveis por 99% do tamanho da conta) pra fazer manualmente depois? Bá, mas vai dar mó trampo novamente. Zipar (horas e horas), transferir, descompactar…

Eis que surge a luz no fim do túnel! rsync!

TL; DR;

Você pode migrar a conta de um CPANEL para outro sem usar o Full Backup. A sacada aqui gerar um backup sem levar o “homedir” da conta junto, importar no server de destino esse arquivo e depois usar o rsync pra sincronizar (praticamente sem downtime). O DNS já pode ser alterado antes mesmo do rsync.
Segue:

1) Gerar backup sem o homedir (via terminal)
/scripts/pkgacct --skiphomedir nomedaconta

2) Copia o arquivo gerado sem o homedir pro servidor novo e pode usar o /scripts/restorepkg pra restaurar a conta.

3) Usa o rsync pra sincronizar o “homedir”, do server antigo para o novo, desse jeito:
rsync -av --progress /home/nomedaconta/* ip-do-servidor-de-destino:/home/nomedaconta/

Feito! Sincroniza depois de transferir e nenhum e-mail que chegar vai se perder, assim vc move uma conta de quase 100 Gb de dados sem downtime.

PS: Se vc não tem acesso ao shell da tua conta, peça pro teu fornecedor liberar, é obrigação dele oferecer um jail shell pelo menos.

PS 2: se vc não sabe nada sobre o rsync, tira o tempo pra ler sobre ele AQUI e depois AQUI.

Abraços e até!