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#
- [ ] Verificar a versão do DirectAdmin:
cat /usr/local/directadmin/version - [ ] Validar o espaço em disco no destino do backup (exigido 2x o tamanho).
- [ ] Validar permissões e donos do diretório
/home/admin/admin_backups/. - [ ] Criar backups preventivos globais de
/usr/local/directadmin/e/etc/httpd/.
2. Geração e monitoramento#
- [ ] Executar o backup via CLI do DirectAdmin.
- [ ] Monitorar a task queue em tempo real via
/var/log/directadmin/task.queue.log. - [ ] Opcional: Executar debug e forçar com
/usr/local/directadmin/dataskq d800.
3. Validação de integridade#
- [ ] Verificar tamanho do arquivo gerado.
- [ ] Rodar o comando
tar -tzfpara inspecionar conteúdos críticos (public_html,Maildir). - [ ] Confirmar a ausência de mensagens de falha em
/var/log/directadmin/system.log.
4. Restauração e pós-migração#
- [ ] Transferir o arquivo de backup para o servidor de destino.
- [ ] Iniciar a restauração via comando CLI do DirectAdmin no destino.
- [ ] Validar a integridade de dados e permissões lendo o diretório
/home/user_system/.
Tabela comparativa de problemas e severidade#
| Problema Identificado | Severidade | Categoria | Descrição / Solução |
|---|---|---|---|
| Ausência de verificação de integridade | Alta | Validação | Risco de migrar arquivos corrompidos e perder bancos de dados sem saber. |
| Processo de restauração ausente | Alta | Recuperação | Incapacidade de restabelecer o site no servidor de destino rapidamente. |
| Falta de backups das configurações globais | Média | Risco | Perda de configurações customizadas de Apache/Nginx e Postfix no upgrade. |
| Falta de validação de espaço em disco | Média | Pré-requisito | O backup falha na metade e lota a partição /home, derrubando outros sites. |
| Permissões de escrita inválidas | Média | Permissões | DirectAdmin incapaz de criar o arquivo .tar.gz por propriedade errada no diretório. |
| Incompatibilidade de versão do DirectAdmin | Baixa | Compatibilidade | Backups de versões muito distantes geram falhas de sintaxe na restauração. |
| Falha no monitoramento de logs de erro | Baixa | Depuração | Triagem cega sem analisar o /var/log/directadmin/system.log. |
| Perda de conectividade local da API | Baixa | Diagnóstico | Erros de comunicação na porta 2222 travam execuções de comandos do painel. |
Comparativo direto de comandos: cPanel vs. DirectAdmin#
| Ação | No cPanel (O que eu sabia) | No DirectAdmin (O que aprendi) |
|---|---|---|
| Gerar Backup | /scripts/pkgacct user | directadmin reseller_backup user=user |
| Local do Backup | /home/cpmove-user.tar.gz | /home/admin/admin_backups/user.tar.gz |
| Ver o progresso | Direto no terminal | tail -f /var/log/directadmin/task.queue.log |
| Forçar execução | Automático | /usr/local/directadmin/dataskq d800 |
| Restaurar Conta | /scripts/restorepkg user | directadmin 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:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários