O Nextcloud já inclui os recursos necessários para limpar arquivos excluídos automaticamente, portanto, a maioria dos administradores não precisa de um script personalizado. De acordo com a documentação de administração do Nextcloud 35, a abordagem recomendada ainda é combinar uma política de retenção de lixeira definida com a execução confiável de tarefas em segundo plano. O detalhe importante é que a autopolítica padrão não é a mesma que "excluir tudo após exatamente 30 dias". Ela mantém os itens excluídos por pelo menos 30 dias e, em seguida, os torna elegíveis para limpeza quando houver necessidade de espaço.
Se o seu objetivo é uma limpeza previsível, defina um tempo máximo de retenção explícito e certifique-se de que as tarefas em segundo plano do Nextcloud sejam executadas pelo cron do sistema. Os passos abaixo utilizam apenas o comportamento documentado pelo Nextcloud e também explicam quando os comandos `nextcloud clean` occ trashbin:expiree `nextcloud clean` trashbin:cleanupsão apropriados.
O que a limpeza automática de lixeiras realmente faz
Quando o aplicativo Arquivos Excluídos ( files_trashbin) está ativado, os arquivos removidos pelos usuários são movidos para a lixeira em vez de serem excluídos imediatamente. Isso dá aos usuários uma janela de recuperação, mas esses itens excluídos ainda consomem espaço de armazenamento. O Nextcloud controla o tempo de vida deles com a trashbin_retention_obligationconfiguração em config/config.php.
A documentação atual de configuração da lixeira do Nextcloud define estes formulários de política:
| Contexto | Significado | Ajuste perfeito |
auto | Guarde os itens por pelo menos 30 dias; após esse período, remova os itens elegíveis quando precisar de espaço. | Instalações de pequeno porte que se adaptam bem ao comportamento padrão. |
D, auto | Guarde os itens por pelo menos D dias e, em seguida, permita a limpeza conforme o espaço disponível. | Você precisa de uma janela mínima de recuperação, mas não de um prazo final rígido para a exclusão. |
auto, D | Garantir a exclusão após D dias, permitindo ainda uma limpeza antecipada baseada no espaço disponível. | Deseja-se um tempo máximo de retenção, mas é possível tolerar a exclusão antecipada em caso de pressão de armazenamento. |
D1, D2 | Conserve os itens por pelo menos D1 dias e exclua-os quando ultrapassarem D2 dias. | Você precisa tanto de um período mínimo de recuperação quanto de uma idade máxima de retenção definida. |
disabled | Desative o fechamento automático da lixeira. | Somente quando a retenção indefinida é intencional e o crescimento do armazenamento é gerenciado de outra forma. |
Há mais uma regra de armazenamento a ter em mente: se a cota de um usuário for excedida devido a arquivos excluídos, o Nextcloud poderá ignorar a configuração de retenção e limpar a lixeira até que os requisitos de cota sejam atendidos. É por isso que a retenção não deve ser considerada uma garantia de backup imutável.
Passo 1: Escolha uma política de retenção antes de alterar qualquer coisa.
Defina a finalidade da lixeira no seu ambiente. Se os usuários costumam restaurar arquivos excluídos acidentalmente, estabeleça um prazo mínimo adequado. Se a sua prioridade for armazenamento limitado ou uma política de retenção de dados documentada, defina também um prazo máximo.
Por exemplo, essa configuração permite a limpeza baseada em espaço a qualquer momento, mas garante que os arquivos com mais de 30 dias sejam removidos:
'trashbin_retention_obligation' => 'auto, 30',
Se você deseja que os arquivos excluídos sejam preservados por pelo menos 30 dias e removidos após esse período, utilize uma política limitada:
'trashbin_retention_obligation' => '30, 30',
Escolha valores que correspondam aos seus requisitos de recuperação. Um período mais curto libera espaço de armazenamento mais rapidamente, mas reduz o tempo disponível para os usuários restaurarem os arquivos. Um período mais longo oferece mais tempo de recuperação, mas pode aumentar o uso do disco.
Passo 2: Defina trashbin_retention_obligation em config.php
Abra o arquivo de configuração do Nextcloud, normalmente localizado no config/config.phpdiretório de instalação. Adicione ou altere a configuração dentro do $CONFIGarray. Um exemplo típico é:
<?php
$CONFIG = array (
// Other Nextcloud settings...
'trashbin_retention_obligation' => 'auto, 30',
);
Não edite valores não relacionados e tome cuidado para não expor o conteúdo em config.phptickets ou capturas de tela, pois pode conter configurações confidenciais do servidor.
Você também pode inspecionar a configuração efetiva por meio das ferramentas de linha de comando do Nextcloud, em vez de copiar o conteúdo do arquivo para uma mensagem de solução de problemas.
Etapa 3: Use o cron do sistema para tarefas em segundo plano confiáveis
A política de retenção só é útil se os jobs em segundo plano do Nextcloud estiverem realmente em execução. A documentação do Nextcloud sobre jobs em segundo plano recomenda o uso do cron do sistema operacional para instâncias de produção. O modo padrão é o AJAX, mas ele depende do número de visitas à página e é a opção menos confiável.
Em uma instalação típica do Linux usando a www-dataconta do servidor web, edite o crontab dessa conta:
crontab -u www-data -e
Em seguida, execute o comando do Nextcloud cron.phpa cada cinco minutos:
*/5 * * * * php -f /var/www/nextcloud/cron.php
Substitua /var/www/nextcloudpelo caminho real da sua instalação. Alguns sistemas exigem o caminho completo da CLI do PHP, como por exemplo /usr/bin/php...
Você também pode selecionar o modo cron explicitamente com:
sudo -E -u www-data php /var/www/nextcloud/occ background:cron
O Nextcloud documenta a tarefa em segundo plano de expiração da lixeira como sendo executada a cada 30 minutos. A execução cron.phpa cada cinco minutos não significa que a lixeira seja esvaziada a cada cinco minutos; significa que o agendador tem oportunidades frequentes de executar tarefas que estão atrasadas.
Passo 4: Verifique se o agendador está funcionando.
Após configurar o cron, verifique primeiro a entrada do sistema operacional:
crontab -u www-data -l
Em seguida, verifique as configurações de administração do Nextcloud para o status dos jobs em segundo plano. A página deve indicar que alguns jobs foram executados recentemente. Se o horário da última execução continuar diminuindo, corrija o cron antes de diagnosticar a política de retenção.
No Nextcloud 35, os occcomandos documentados também incluem comandos de inspeção de tarefas em segundo plano, como background-job:list`nextcloud -n`, background-job:running`nextcloud -n` e ` background-job:historynextcloud -n`. Esses comandos podem ser úteis quando você precisa verificar se as tarefas estão sendo processadas, em vez de simplesmente presumir que o cron está ativo.
Etapa 5: Use trashbin:expire para execuções manuais baseadas em políticas.
Se você configurou um período de retenção personalizado, pode aplicar essa política manualmente com:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:expire
A documentação atual do Nextcloud sobre os comandos de arquivos e lixeira observa uma limitação importante: trashbin:expirea expiração manual só é realizada quando um período de retenção personalizado é configurado. Com a autopolítica padrão, o comando é encerrado com uma mensagem informativa e não faz nada, pois a expiração automática é gerenciada pela tarefa em segundo plano.
Se você deseja deliberadamente uma entrada cron separada para o sistema trashbin:expire, o Nextcloud documenta uma maneira de desativar primeiro a tarefa em segundo plano de expiração de lixeira integrada ao aplicativo:
sudo -E -u www-data php /var/www/nextcloud/occ config:app:set --value=no files_trashbin background_job_expire_trash
Você pode então agendar occ trashbin:expire --quietpor conta própria. Esta é uma opção avançada. Para a maioria das instalações, manter a tarefa de expiração integrada ativada e executar cron.phpo agendador padrão do Nextcloud é mais simples e fácil de manter.
Não confunda trashbin:expire com trashbin:cleanup
Os nomes são semelhantes, mas os comandos têm efeitos muito diferentes. trashbin:expireRemove os itens que se enquadram na política de retenção configurada. trashbin:cleanupRemove permanentemente o conteúdo da lixeira dos usuários especificados.
Por exemplo:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:cleanup --all-users
é uma limpeza destrutiva de todos os usuários. É útil quando você precisa esvaziar a lixeira de todos os usuários intencionalmente, mas geralmente não é o comando certo para automação rotineira baseada em retenção, pois ignora a janela de recuperação que você definiu. Não coloque um comando de limpeza de todos os usuários no cron, a menos que a limpeza permanente e incondicional seja realmente sua política.
Passo 6: Verificar e controlar o tamanho da lixeira no Nextcloud 35
A documentação atual do comando `nextcloud 35` inclui `--trailer-size` trashbin:size, que permite aos administradores inspecionar ou definir o tamanho alvo da lixeira globalmente ou por usuário. Para visualizar o valor global atual:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size
Para visualizar o público-alvo efetivo de um usuário específico:
sudo -E -u www-data php /var/www/nextcloud/occ trashbin:size --user USER_ID
Um tamanho alvo configurado pode complementar a retenção baseada na idade quando a capacidade de armazenamento é a principal preocupação. O Nextcloud observa que alterar o tamanho padrão global aciona imediatamente a limpeza das lixeiras existentes; portanto, trate as alterações de tamanho como uma ação operacional, e não apenas como uma configuração de exibição inofensiva.
Como saber se a limpeza automática está funcionando
- O status do trabalho em segundo plano mostra as execuções recentes.
- O arquivo crontab do sistema operacional contém a
cron.phpentrada esperada.
- Sua configuração
trashbin_retention_obligationcorresponde à política que você pretendia.
- Os itens de lixo antigos desaparecem com o tempo, de acordo com a idade máxima configurada, se houver.
trashbin:expireComporta-se conforme documentado quando uma política personalizada é configurada.
- O uso de disco ou de quota para de crescer inesperadamente porque arquivos excluídos obsoletos não são mais retidos indefinidamente.
Se arquivos antigos permanecerem por mais tempo do que o esperado, primeiro confirme se sua política realmente contém um valor máximo. A autoconfiguração padrão não garante a exclusão exata no 30º dia. Em seguida, verifique as tarefas em segundo plano. Somente após essas verificações você deve investigar permissões, servidores de armazenamento ou logs de aplicativos.
Uma configuração prática para a maioria dos servidores auto-hospedados.
Para uma instância autohospedada típica, um ponto de partida sensato é usar o cron do sistema a cada cinco minutos e definir uma idade máxima explícita para a lixeira. Por exemplo, 'auto, 30'isso permite que os usuários tenham até aproximadamente um mês de vida útil para a lixeira em condições normais, garantindo que os itens não permaneçam indefinidamente. Se os usuários precisarem sempre ter a janela de recuperação completa, independentemente da pressão de armazenamento, use uma política com limites mínimos e máximos, como ` '30, 30'freetime.min.max ...
Mantenha os backups separados da lixeira. A lixeira é um recurso de recuperação de dados do usuário com cotas e restrições de retenção; ela não substitui uma estratégia de backup independente.
Referências oficiais do Nextcloud