Se você gerencia um servidor cPanel, certamente já se deparou com o crescimento inesperado do uso de disco. Um dos principais vilões desse consumo são os arquivos error_log. Esses arquivos são gerados automaticamente pelo PHP sempre que ocorre um erro de script, um aviso (notice) ou uma notificação de depreciação no código do seu site. Em sites com alto tráfego ou scripts mal otimizados, esses logs podem crescer rapidamente, chegando a ocupar gigabytes de espaço, o que pode comprometer a estabilidade do servidor e impedir o funcionamento de backups e outros serviços essenciais.
Neste tutorial da Toda Solução, você aprenderá como localizar, identificar e deletar esses arquivos de forma eficiente via SSH, utilizando comandos Linux poderosos. Além disso, mostraremos como automatizar esse processo para que você nunca mais precise se preocupar com logs acumulados.
Pré-requisitos
Antes de iniciar, certifique-se de que você atende aos seguintes requisitos para evitar danos à sua infraestrutura:
- Acesso Root via SSH: Você precisará de privilégios de superusuário (root) para realizar buscas em todas as pastas de usuários (/home).
- / Conhecimento de Terminal: É essencial ter familiaridade com comandos básicos de Linux.
- Backup Atualizado: Embora o comando foque apenas em arquivos de log, sempre recomendamos ter um backup recente do servidor antes de realizar operações de deleção em massa.
Atenção: O comando de deleção é irreversível. Uma vez executado, os dados contidos nos logs serão perdidos permanentemente.
Passo a passo
O processo será dividido em três etapas: Localização, Identificação por tamanho e Deleção.
1. Localizando todos os arquivos error_log no servidor
O primeiro passo é mapear onde os arquivos estão espalhados. Não queremos deletar nada sem saber o que existe. Utilize o comando find para listar todos os arquivos chamados "error_log" dentro das pastas públicas dos usuários do cPanel.
root@server [~]# find /home/*/public_html -type f -name error_log -exec du -sh {} ;
Este comando percorre o diretório /home, entra em cada pasta de usuário, busca dentro de public_html por arquivos do tipo arquivo (-type f) com o nome exlustamente igual a "error_log" e o comando du -sh exibirá o tamanho de cada um deles de forma legível (KB, MB ou GB).
2. Identificando os maiores arquivos (Ordenação por tamanho)
Se o seu servidor tem centenas de contas, a lista acima pode ser enorme. Para focar no que realmente está roubando seu espaço, vamos listar os logs e ordená-los do menor para o maior:
root@server [~]# find /home/*/public_html -type f -name error_log -exec du -sh {} ; | sort -n
Com este comando, os arquivos mais pesados aparecerão no final da lista, facilitando a identificação dos culpados pelo uso excessivo de disco.
3. Localizando arquivos críticos (Acima de 100MB)
Se você precisa de uma ação rápida para liberar espaço imediato, pode filtrar apenas os arquivos que ultrapassam um limite específico. No exemplo abaixo, buscaremos apenas arquivos maiores que 100MB:
root@server [~]# find /home/*/public_html -type f -size +100000k -exec du -sh {} ;
Nota: O valor 100000k corresponde a aproximadamente 100MB.
4. Deletando os arquivos error_log
Após a conferência e certeza de que você deseja remover esses registros, você pode proceder com a limpeza. Existem duas abordagens:
A) Deletar TODOS os arquivos error_log encontrados:
root@server [~]# find /home/*/public_html -type f -iname error_log -delete
B) Deletar apenas os arquivos grandes (Ex: acima de 100MB):
root@server [~]# find /home/*/public_html -type f -iname error_log -size +100000k -delete
O uso do parâmetro -iname é uma boa prática, pois torna a busca "case-insensitive" (ignora se o nome está em maiúsculo ou minúsculo).
5. Automatizando a limpeza com Cron Job
Para evitar que o problema retorne, você pode configurar uma tarefa agendada (Cron Job) no sistema para realizar essa limpeza automaticamente todas as noites. Assim, o servidor se mantém limpo sem intervenção manual.
- Abra o editor de crontab do usuário root:
root@server [~]# crontab -e - Vá até o final do arquivo e adicione a seguinte linha:
0 23 * * * find /home/*/public_html -type f -iname error_log -delete - Salve e saia do editor (No Nano, use
Ctrl+O,EntereCtrl+X).
A configuração acima executará o comando todos os dias às 23:00 (horário do servidor), garantindo que os arquivos de log sejam removidos antes do início do novo ciclo de uso diário.
Verificação
Após executar os comandos de deleção, é fundamental verificar se o espaço em disco foi liberado e se os arquivos foram removidos com sucesso. Execute novamente o comando de listagem:
root@server [~]# find /home/*/public_html -type f -name error_log -exec du -sh {} ;
Se o comando não retornar nenhum resultado, parabéns! Seu servidor está limpo de logs acumulados.
Troubleshooting
Caso você encontre dificuldades durante o processo, verifique os pontos abaixo:
- Permissão Negada (Permission Denied): Se você não estiver usando o usuário root, o comando
findnão conseguirá acessar as pastas de outros usuários. Certifique-se de estar logado como superusuário. - Arquivos não sumiram: Se o arquivo ainda aparece, verifique se ele não está sendo "segurado" por um processo ativo (como o PHP-FPM ou Apache). Em casos raros, o espaço em disco só é liberado após o reinício do serviço ou após o fechamento do processo que escreve no arquivo.
- Caminho incorreto: Se o seu servidor utiliza uma estrutura de diretórios personalizada (diferente de
/home), ajuste o caminho inicial do comandofindpara refletir a realidade da sua infraestrutura.