Migrando do cPanel para DirectAdmin: como gerar backups via CLI
Voltar para blog

Migrando do cPanel para DirectAdmin: como gerar backups via CLI

07/06/2026 · 6 min · Infraestrutura

Migrando do cPanel para DirectAdmin: Como Gerar Backups via CLI#

Quem trabalha com infra e suporte N2 sabe: quando você está acostumado com uma ferramenta por mais de 10 anos (no meu caso, o cPanel), mudar para outra - como o DirectAdmin - dá aquele nó na cabeça.

Eu estava no meio de uma migração brava (daquelas de mover instâncias de Proxmox para a OVH) e precisei gerar um backup completo de uma conta via terminal. No cPanel, o dedo já vai automático no /scripts/pkgacct, mas e no DirectAdmin? Cadê o equivalente?

Vem comigo que vou mostrar o que aprendi no "campo de batalha", os erros que deram e como resolvi de forma segura.


O choque cultural: pkgacct vs. task queue#

Se você, assim como eu, é da escola do PHP, Shell Script e Linux raiz, sabe que o pkgacct é vida. Você roda o comando, ele trava o terminal e te mostra linha por linha o que está acontecendo.

No DirectAdmin, a pegada é diferente. Ele trabalha com uma Task Queue (fila de tarefas). Você pede o backup, ele diz "beleza" e volta o prompt pra você, mas fica processando tudo em background. No começo, isso dá uma agonia porque você acha que não está acontecendo nada!


Diagnóstico inicial do sistema e versões#

Antes de iniciar qualquer migração ou backup massivo de contas, é vital certificar-se de que a instância do DirectAdmin está operacional, atualizada e com os serviços respondendo:

# Verificar a versão instalada do DirectAdmin
cat /usr/local/directadmin/version

# Verificar se há atualizações do painel pendentes
/usr/local/directadmin/directadmin update

# Validar configurações globais de sistema
cat /usr/local/directadmin/conf/directadmin.conf | head -20

1. Validar a conectividade local#

Verifique se a porta padrão do painel (2222) está respondendo localmente:

# Validar resposta da API local
curl -k https://localhost:2222/

# Verificar se a porta está em escuta
ss -lntp | grep -E "2222|8080"

2. Verificar status dos servidores web#

Garanta que os servidores HTTP que hospedam os sites estejam rodando de forma saudável antes do backup:

systemctl status httpd 2>/dev/null || systemctl status nginx

Pré-requisitos cruciais: espaço em disco e permissões#

Um erro comum é iniciar o backup sem validar se há espaço livre na partição de destino ou se o processo tem permissão para escrever o arquivo.

1. Verificação de espaço em disco#

A regra de ouro é ter em disco pelo menos o dobro do tamanho ocupado pela conta a ser migrada (uma vez para a área temporária de dump e outra para o arquivo compactado final).

# Verificar tamanho ocupado pelo diretório do usuário
du -sh /home/user_system/

# Verificar espaço disponível na partição de backups
df -h /home/admin/admin_backups/ 2>/dev/null || df -h /home/

Script de validação automatizada pré-backup:

REQUIRED=$(du -sm /home/user_system/ | awk '{print $1}')
AVAILABLE=$(df -m /home/ | tail -1 | awk '{print $4}')

# Definir margem segura de 2x o tamanho
SAFE_REQUIRED=$((REQUIRED * 2))

if [ "$AVAILABLE" -lt "$SAFE_REQUIRED" ]; then
    echo "ERRO: Espaço em disco insuficiente. Necessário: ${SAFE_REQUIRED}MB, Disponível: ${AVAILABLE}MB"
    exit 1
else
    echo "Espaço suficiente confirmado para prosseguir com o backup."
fi

2. Auditoria de permissões#

Verifique as permissões de escrita no diretório padrão de backups:

# Exibir dono e permissões do diretório
ls -la /home/admin/admin_backups/
stat /home/admin/admin_backups/

# Testar se o usuário administrador admin tem permissão de escrita
sudo -u admin touch /home/admin/admin_backups/test-write && rm /home/admin/admin_backups/test-write

Gerando o backup preventivo geral#

1. Backup de configurações do servidor#

Antes de operar as migrações, faça backup manual das configurações do próprio painel e dos serviços de web e e-mail:

# Backup do diretório de core do DirectAdmin
tar czf /root/directadmin-backup-$(date +%Y%m%d).tar.gz /usr/local/directadmin/

# Backup de configurações do Apache e Postfix
cp -r /etc/httpd/ /root/httpd-backup-$(date +%Y%m%d)/ 2>/dev/null || cp -r /etc/nginx/ /root/nginx-backup-$(date +%Y%m%d)/
cp -r /etc/postfix/ /root/postfix-backup-$(date +%Y%m%d)/

2. Gerar o backup da conta via CLI#

Para gerar o backup de um usuário (vamos chamar de user_system) direto pelo terminal:

/usr/local/directadmin/directadmin reseller_backup user=user_system

3. Loop de backup em massa para múltiplas contas#

Se você precisar migrar todas as contas do servidor cPanel/DirectAdmin em lote:

# Executa backup sequencial para todos os usuários normais
for user in $(ls /home/ | grep -v -E "admin|lost\+found"); do
    echo "Gerando backup para o usuário: $user"
    /usr/local/directadmin/directadmin reseller_backup user=$user
done

Monitoramento da fila em tempo real#

Como o comando do DirectAdmin retorna instantaneamente para o shell, utilize o tail no log da fila de tarefas para acompanhar a geração:

tail -f /var/log/directadmin/task.queue.log

Se quiser ver se o processo de compactação está ativo mesmo, use o ps:

ps aux | grep -E "tar|zstd|gzip"

O comando de execução imediata ("cPanel style")#

Para forçar a execução imediata e ver tudo o que está acontecendo no terminal na hora (sem esperar o cron rodar a fila):

/usr/local/directadmin/dataskq d800

O d800 é o nível de debug. Ele vai detalhar cada dump de banco de dados e cada pasta compactada.


Validação de integridade do backup gerado#

Após a mensagem de conclusão, certifique-se de que o backup foi gerado de forma completa e não está corrompido:

1. Validar formato do backup (tar.gz ou tar.zst)#

O DirectAdmin gera backups em formatos compactados. Descubra o formato exato:

file /home/admin/admin_backups/user_system*.tar.*

2. Auditar tamanho e integridade#

O arquivo deve ter um tamanho consistente com os dados do usuário:

# Exibir o tamanho exato do arquivo gerado
ls -la /home/admin/admin_backups/user_system*.tar.*
du -sh /home/admin/admin_backups/user_system*.tar.*

3. Validar a estrutura interna e conteúdo crítico#

Para testar a integridade sem descompactar, liste os primeiros arquivos:

# Para backups formato tar.gz
tar -tzf /home/admin/admin_backups/user_system.tar.gz | head -20

# Para backups formato tar.zst (Zstandard)
tar --zstd -tzf /home/admin/admin_backups/user_system.tar.zst | head -20

Verifique se os diretórios vitais (páginas web, e-mails e dumps de bancos de dados) constam na listagem:

tar -tzf /home/admin/admin_backups/user_system.tar.gz | grep -E "public_html|Maildir|backup/mysql"

Contar o volume total de arquivos empacotados ajuda a conferir perdas:

tar -tzf /home/admin/admin_backups/user_system.tar.gz | wc -l

Procedimento de restauração da conta#

Após migrar o arquivo .tar.gz ou .tar.zst para o novo servidor de destino, execute a restauração via linha de comando:

# Executar a restauração no servidor de destino
/usr/local/directadmin/directadmin reseller_backup user=user_system restore=/home/admin/admin_backups/user_system.tar.gz

Nota: Se o backup estiver em formato Zstandard, substitua o caminho correspondente.

Forçar processamento da restauração#

Assim como a geração, a restauração entra na task queue. Force a execução em tempo real para auditoria:

/usr/local/directadmin/dataskq d800

Validar se a restauração funcionou#

Certifique-se de que as pastas e dados do usuário foram restaurados com os donos corretos:

ls -la /home/user_system/
ls -la /home/user_system/public_html/

Diagnóstico de falhas e logs de erro#

Se o backup falhar ou a fila travar, faça a triagem através dos logs do DirectAdmin:

# Visualizar erros recentes no log do sistema
tail -100 /var/log/directadmin/system.log | grep -i -E "error|fail"

# Filtrar falhas específicas de backups ou permissões
grep -i "backup" /var/log/directadmin/system.log | tail -20
grep -i "permission\|denied" /var/log/directadmin/system.log | tail -20

Configuração de backups automatizados via cron#

Para evitar intervenções manuais, configure o backup recorrente no crontab do usuário administrador admin:

# Listar tarefas agendadas do usuário admin
crontab -l -u admin

# Adicionar agendamento diário (às 02:00 da manhã) para a conta do usuário
(crontab -l -u admin 2>/dev/null; echo "0 2 * * * /usr/local/directadmin/directadmin reseller_backup user=user_system") | crontab -u admin -

Checklist: backup via CLI no DirectAdmin#

1. Pré-backup e diagnóstico#

2. Geração e monitoramento#

3. Validação de integridade#

4. Restauração e pós-migração#


Tabela comparativa de problemas e severidade#

Problema IdentificadoSeveridadeCategoriaDescrição / Solução
Ausência de verificação de integridadeAltaValidaçãoRisco de migrar arquivos corrompidos e perder bancos de dados sem saber.
Processo de restauração ausenteAltaRecuperaçãoIncapacidade de restabelecer o site no servidor de destino rapidamente.
Falta de backups das configurações globaisMédiaRiscoPerda de configurações customizadas de Apache/Nginx e Postfix no upgrade.
Falta de validação de espaço em discoMédiaPré-requisitoO backup falha na metade e lota a partição /home, derrubando outros sites.
Permissões de escrita inválidasMédiaPermissõesDirectAdmin incapaz de criar o arquivo .tar.gz por propriedade errada no diretório.
Incompatibilidade de versão do DirectAdminBaixaCompatibilidadeBackups de versões muito distantes geram falhas de sintaxe na restauração.
Falha no monitoramento de logs de erroBaixaDepuraçãoTriagem cega sem analisar o /var/log/directadmin/system.log.
Perda de conectividade local da APIBaixaDiagnósticoErros de comunicação na porta 2222 travam execuções de comandos do painel.

Comparativo direto de comandos: cPanel vs. DirectAdmin#

AçãoNo cPanel (O que eu sabia)No DirectAdmin (O que aprendi)
Gerar Backup/scripts/pkgacct userdirectadmin reseller_backup user=user
Local do Backup/home/cpmove-user.tar.gz/home/admin/admin_backups/user.tar.gz
Ver o progressoDireto no terminaltail -f /var/log/directadmin/task.queue.log
Forçar execuçãoAutomático/usr/local/directadmin/dataskq d800
Restaurar Conta/scripts/restorepkg userdirectadmin reseller_backup user=user restore=/path/to/file
Verificar Logs/var/log/cpanel/var/log/directadmin/system.log

🏆 Comparativo Completo de Painéis: Avaliando a migração completa da sua infraestrutura? Confira nosso benchmark detalhado: Melhores Painéis de Controle Linux: cPanel, DirectAdmin, CyberPanel ou CloudPanel? no Hub de Rankings & Comparativos Técnicos.

Este artigo foi útil?

Deixe uma reação rápida para apoiar o conteúdo:

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários