Exclui arquivos antigos na pasta grande

2

Eu tenho uma pasta que contém muitos arquivos. Eu quero excluir arquivos com mais de 30 dias, então eu uso o comando:

find cache/ -mtime +30 -exec rm {} \;

Mas minha sessão SSH é desconectada antes que o comando seja concluído.

Como posso limitar o número de arquivos que são excluídos de uma só vez? Por exemplo:

find cache/ -mtime +30 -LIMIT 10000 -exec rm {} \;
    
por dinh 15.01.2012 / 05:04

4 respostas

5

Execute-o em uma sessão screen . Dessa forma, quando a massa se desconecta, a tarefa ainda está sendo executada no servidor. Basta reconectar e usar screen -r para anexar novamente a sessão de tela para ver o progresso.

    
por 15.01.2012 / 05:44
4

Você também pode executar o comando com nohup , assim:

nohup find cache/ -mtime +30 -exec rm {} \; &

Então, cat nohup.out para ficar de olho na saída.

    
por 15.01.2012 / 05:48
3

Você pode fazer algo como:

find cache/ -mtime +30 | head -n 10000 | xargs rm

Isso funcionaria se os nomes de arquivos fossem bastante "baunilha" (sem espaços, caracteres especiais, etc.) e curtos.

Mas se você preferir apenas aguardar que seu comando original seja concluído, basta dizer ao PuTTY para enviar mensagens de keepalive do SSH de vez em quando; veja os documentos do PuTTY para mais detalhes. Eu costumo usar um valor entre 45-60 segundos, eu mesmo.

    
por 15.01.2012 / 05:45
2
find cache/ -mtime +30 -print0 | xargs -0 rm -v

Em seguida, ele exibirá todos os arquivos excluídos, o que impedirá o tempo limite da sua sessão.

Ou, coloque isso no cron, pois é algo que parece ser automatizado.

    
por 15.01.2012 / 06:55

Tags