LINUX: Ajude-me a procurar recursivamente um diretório inteiro para a última vez acessada em arquivos

1

Eu recentemente herdei um servidor linux que o administrador anterior usava para despejar tudo e tudo. O que eu gostaria de fazer é obter uma lista de todos os arquivos no diretório classificados pelo último tempo acessado, com a intenção de eliminar qualquer coisa que não esteja sendo usada pela empresa.

Eu estou supondo que eu provavelmente deveria voltar 3 meses, já que a empresa é muito ativa com seus serviços web, então qualquer coisa que não tenha sido tocada nos últimos 3 meses é mais provável que seja um peso morto.

Eu tentei usar as respostas nisto:

Mas isso não parece funcionar bem.

Como uma ressalva, minha experiência administrativa do Linux é muito nova. Eu sou bem versado em implantação e configuração, mas eu nunca tive que fazer algo assim (quero dizer, essa coisa é uma verdadeira bagunça e ela precisa disso).

Eu não sou contra montar um script PHP para executá-lo, mas, novamente, eu não sou tão quente com PHP, então eu realmente preciso de alguma ajuda simples aqui. Idealmente, ter um script para executar que também tenha uma opção de arquivo delete faria meu dia, ou até mesmo uma sequência de comando BASH que pode ter rm incluído se eu decidir que tudo o que encontrar for lixo eletrônico.

Agradecemos antecipadamente por toda e qualquer ajuda que você possa oferecer. Eu realmente agradeço.

    
por Community 16.12.2011 / 16:35

2 respostas

1

Primeiras coisas primeiro :) faça backup de tudo!

Para o propósito deste exemplo, eu assumirei que seus arquivos estão em /var/www change para o que realmente estiver em seu sistema.

    tar fcvz www-backup.tar.gz /var/www 

criará um backup de seu ambiente web existente em um arquivo tar (caso as coisas dêem errado, você sempre poderá recuperar arquivos perdidos)

Agora, localize os arquivos que não foram acessados em 90 dias ou mais:

    cd /var/www
    find . -atime 90 -type f -ls

Lista os arquivos na tela com horários modificados. Desta forma, você pode ter certeza de que os arquivos que você está tentando excluir estão INDEED os arquivos que você deseja excluir. Você pode canalizar isso para menos, para rolar para cima e para baixo:

   find . -atime 90 -type f -ls | less

use as setas para cima e para baixo para ver a lista, saia do tipo 'q'.

Se tudo parece bem:

    pwd

verifique se você ainda está no diretório de trabalho correto.

    find . -atime 90 -type f echo rm -f {}  \; > doit.sh 

isso criará um arquivo chamado doit.sh que conterá os comandos de remoção.

Leia mais uma vez:

    less doit.sh 

se todos os arquivos estiverem corretos para remoção, você poderá executá-lo:

    sh doit.sh
    
por 16.12.2011 / 16:53
1

Isso soa no beco do Google :

$ cd $ROOT_OF_JUNKYARD
$ find . -atime 90

Deve listar todos os arquivos acessados nos últimos 90 dias.

OBSERVAÇÃO : manter o controle do atributo atime é um pouco custoso para o sistema de arquivos, portanto, alguns administradores o desativam, para sistemas de arquivos que suportam isso (o ext2 no Linux o faz). Se sua máquina estiver configurada para não manter atime , essa abordagem não funcionará. : |

Uma vez que você está feliz, todos os arquivos listados são lixo, você pode trivialmente estender o comando para excluir os resultados:

$ find . -mtime 90 -exec rm -i \{\} \;

A opção -i para rm torna interativa , ele solicitará que você se certifique de cada remoção. Isso é para protegê-lo de explodir o pé, o que de outra forma é bastante fácil com os comandos rm aplicados recursivamente.

    
por 16.12.2011 / 16:40

Tags