Linux escreveu:
> Ola Lista,
> Eu estou precisando de um script para apagar arquivos e/ou diretórios de um
> servidor ftp.
> Eu preciso apagar tudo que for mais velho que 90 dias.
> Eu tentei assim:
> find /ftp_dir -mtime +90 -exec rm {} \;
> O problema é que o rm não apaga diretórios. Além disto quando, em um
> diretório, arquivos são apagados, a data do diretório é alterada. Assim o
> parametro mtime não “acha” esse diretório mais até que ele se torne outra
> vez mais velho que 90 dias.
> Alguém conhece uma boa solução para isso?
> Obrigado e boas festas
> Oscar
>
Olá,
Poderia ter melhor formulado o assunto, pois seu problema não é FTP e
sim find e rm, só uma dica...
O rm apaga diretórios com a opção -r, forçando com a opção -f para não
dar nenhum erro e apagar na marra. Um solução para o caso que citou é
usar o rm sobre uma lista de arquivos e diretórios antigos, mas temos um
problema com diretórios: um diretório com mais de 90 dias pode conter um
diretório que teve alterações em menos de 90 dias e o find irá lista o
diretório com mais de 90 dias sem alterações que tem outro com menos de
90 dias sem alterações, daí o rm -rf irá apagar o diretório antigo e
todos subdiretórios e não deveria fazer isso.
Assim sendo, aconselho criar uma lista com todos os arquivos e outra com
todos os diretórios antigos, apagar todos os arquivos antigos e usar o
rmdir, o qual apaga apenas diretórios vazios, sobre a lista de
diretórios em ondem alfabética reversa, apagando dessa forma os
diretórios antigos vazios.
Entendida a lógica, vamos tentar:
#!/bin/bash
Diretorios_Antigos="`find /ftp_dir -mtime +90 -type d | sort -r`"
Arquivos_Antigos="`find /ftp_dir -mtime +90 ! -type d`"
echo "$Arquivos_Antigos" | while read Arquivo; do rm "$Arquivo"; done
echo "$Diretorios_Antigos" | while read Diretorio; do rmdir
"$Diretorio"; done
E aí, deu certo?
--
Atenciosamente,
Junior Polegato
Um peregrino de problemas; Um pergaminho de soluções!
Página Profissional: http://www.juniorpolegato.com.br
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html