+ Responder ao Tópico



  1. #1

    Padrão Script para exclusão de arquivos antigos

    Ola pessoal,
    Estou precisando montar um script para excluir arquivos antigos de um determinado diretório. Tipo arquivos com mais de 5 dias seriam apagados.

    Alguem tem alguma didca?

  2. #2

    Padrão Script para exclusão de arquivos antigos

    acho que ficaria mais ou menos assim:

    for arquivo in `find / -atime 5`; do
    rm $arquivo
    done


    teste somente o comando find / -atime 5 pra ver se sao esses arquivos msm que vc quer apagar, o atime eh -atime 24*n
    http://linux.about.com/od/commands/l/blcmdl1_find.htm



  3. #3

    Padrão Re: Script para exclusão de arquivos antigos

    Valeu pela dica!
    Consegui chegar ao resultado com o seguinte comando?

    Código :
    find -maxdepth 1 -type f -ctime +5 -exec rm -f \{\} \;

    Sendo que +5 significa arquivos modificados a mais de 5 dias.

  4. #4
    Mameli
    Visitante

    Padrão Re: Script para exclusão de arquivos antigos

    Preste atenção!!!!!

    No script que você utilizou, o parâmetro ctime serve para filtrar alterações de Status do arquivo e não a data da última modificação.

    O script pode ser mais simples usando:
    find . -type f -mtime +5 | xargs rm -f

    Traduzindo:
    Procure a partir do local corrente tudo o que for do tipo f (arquivo) cuja última alteração se deu a mais de 5 dias. Cada arquivo encontrado deverá ser apagado.

    []s

    Mameli



  5. #5

    Padrão Re: Script para exclusão de arquivos antigos

    Legal, obrigado pela dica!

    Na verdade eu precisava de um comando ou script para apagar arquivos antigos que foram enviados às lixeiras do SAMBA.
    Essas lixeiras são diretórios e estão espalhadas em vários locais dentro de /home.

    Consegui chegar ao seguinte comando:
    Código :
    find /home -name .recycle -type d -exec find {} -mtime +5 \; | xargs rm -f

    Alguem tem mais alguma dica? Será que está correto?

  6. #6

    Padrão Re: Script para exclusão de arquivos antigos

    Entao se eu fizer:

    Código :
    find / -atime 5`
    Ele me trará os arquivos acessados a mais de 5 dias?


    Código :
    find / -mtime 5`
    Ele me trará os arquivos modificados a mais de 5 dias?


    Código :
    find / -ctime 5`
    Ele me trará os arquivos criados a mais de 5 dias?

    Correto? É isso que eu entendi?



  7. #7

    Padrão Re: Script para exclusão de arquivos antigos

    Citação Postado originalmente por eduroges
    Na verdade eu precisava de um comando ou script para apagar arquivos antigos que foram enviados às lixeiras do SAMBA.
    Essas lixeiras são diretórios e estão espalhadas em vários locais dentro de /home.

    Consegui chegar ao seguinte comando:
    Código :
    find /home -name .recycle -type d -exec find {} -mtime +5 \; | xargs rm -f
    Ola pessoal, corrigindo isso: "pensei que tivesse conseguido!"
    A rotina do "find" está funcionando certinho, contudo não está excluindo os arquivos. Suponho que o problema está nos "nomes longos do Windows", que podem conter espaços. Acredito que isso esteja confundindo o comando.
    Como eu poderia resolver isso? Como retornar o nome do arquivo com aspas?

  8. #8
    fabricio_
    Visitante

    Padrão Re: Script para exclusão de arquivos antigos

    pq vc da um find dentro do outro ??
    find /home -name .recycle -type d -mtime +5 -exec echo {} \;

    veja se ele ecoa oq vc quer realmente deletar , se sim , troque o echo pelo rm -vf



  9. #9

    Padrão Re: Script para exclusão de arquivos antigos

    Olha, eu vi como fazer de algumas maneiras, mas to com um problema.

    O mapeamento é //dados/terra

    Então no meu script eu posso usar:

    find //dados/terra -atime +3
    Este ele me mostra todos os arquivos que foram modificados a mais de 3 dias.

    find //dados/terra -mtime +3
    Modificados a mais de 3 dias.

    find //dados/terra -ctime +3
    Criados a mais de 3 dias.

    Depois eu redireciono a saída para o arquivo >/tmp/arquivo3dias
    E uso "cat /tmp/arquivo3dias | xargs rm -fR" para apagar todos os arquivos que contém no arquivo3dias, ok?!

    O problema é, eu preciso encontrar a data mais sensata para apagar os arquivos.
    Nas propriedades de um arquivo há a data de criação, modificação e último acesso. Mas imagine que eu use o script para pegar a data de último acesso. E o usuário acessou o arquivo a 2 semanas e jogou lá para outro cara ver. Então meu script irá apagar este arquivo.
    Se eu pegar pela data de modificação, e o cara modificou esse arquivo a muito tempo, então pronto, meu script terá o nome de SEM_DÓ ou SERIAL_KILLER. (hahaha)

    Alguém conhece "algo" (talvez no samba) que eu possa pegar como referencia para saber se o arquivo está lá a mais de 3 dias.

    Estou pensando em algo como quando eu agendar para executar o scritp eu faço uma leitura no mapeamento todo, e gravo em um arquivo, farei isso 3 vezes (3 dias), pois na próxima (4º dia) ele verificará os arquivos que possui na lista 1 e na lista 4 e apagará eles. Né?

    O que acham?
    Dá pra mandar bala.?!