shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Script remoção de arquivo


From: Tiago Peczenyj
Subject: Re: [shell-script] Script remoção de arquivo
Date: Fri, 9 Jan 2015 14:11:13 -0200

uma coisa que vc precisa se perguntar é se vc precisa lidar com links simbolicos ou hard links também.

outra coisa que vc ver é qual o impacto de deixar para traz uma estrutura de diretorios vazios.

por exemplo, existe um limite de subdiretorios dentro de um diretorio que vai te causar problemas no momento mais inoportuno possivel. No meu caso foi durante uma virada de ano novo e tive q resolver pelo telefone com um cara do outro lado gritando que o problema seria a troca de ano ou algo relacionado a data.

é por isso que é interessante fazer um hash de diretorios quando existe a possibilidade disso acontecer. pro exemplo se vc tem

/caminho/1420819184/lol.css
/caminho/1420819184/wow.jpg
/caminho/1420819184/zzz.js
/caminho/1420819183/lol.css
/caminho/1420819183/wow.jpg
/caminho/1420819183/zzz.js

...

pode ser interessante vc fazer algo como

/caminho/83/1/1420819183/zzz.js
/caminho/84/1/1420819184/zzz.js

nesse caso eu criei 100 subdiretorios cada um contento mais 10 subdiretorios usando a regra

/caminho/YZ/X/1420819XYZ/zzz.js

Se vc pode ter esse problema, então pense em duas coisas:

1- procure e delete diretorios vazios, se necessario
2- pense em criar um hash de diretorios se chegar perto de numeros muito grande como 32 mil subdiretorios.

Nada disso é mandatorio.

Mencionei os hard links pois um dia eu precisei fazer

/caminho/ProgramaA/1420819184/lol.css
/caminho/ProgramaA/1420819184/wow.jpg
/caminho/ProgramaA/1420819184/zzz.js

/caminho/ProgramaB/1420819184/lol.css
/caminho/ProgramaB/1420819184/wow.jpg
/caminho/ProgramaB/1420819184/zzz.js

e 90% das vezes eu tinha os mesmos arquivos copiados em varios lugares, ocupando espaço e preciso de uma logica muito complexa para apagar ou não. Com hard links eu consigo eliminar o problema pois se eu deletar o lol.css do ProgramaA isso não afeta o ProgramaB, e quando apagar de B eu realmente apaguei o conteudo.

estas manipulações de arquivos sempre se mostraram tensas, por isso eu sempre optei por criar scripts que, mesmo que fossem executados por uma cron, que gerassem um log do que fizeram, em que arquivos e por que, as vezes enviando um email com estatisticas.

a pior coisa é apagar o que não se deve, ainda mais se o backup demorar. as vezes eu movia para uma pasta "vou_apagar_em_7_dias" que dava tempo pra resgatar algo.

Mesmo seguindo todas as regras, as vezes não é interessante apagar os arquivos. um bom exemplo foi quando o Michael Jackson morreu e o povo queria ver os videos antigos da globo.com - nesse dia deu altas tretas, lembro como e fosse ontem - e são casos onde basta uma canetada pra pagar os direitos conexos e pode exibir tudo.

Por isso eu sou bem cético com relação a scripts que apagam coisas. É interessante ter uma opção VERBOSE para ver o que esta acontecendo e uma opção DRY_RUN onde vc finge que apaga (para fins de auditoria e testes). Se puder executar isso em um ambiente com chroot de forma que não opere fora do especificado, melhor ainda (adivinha quem fez um script que seguia o .. ? pois é um dia eu removi até o rm ...).

Boa sorte.

Tiago

2015-01-09 13:53 GMT-02:00 Wanderson Barrence address@hidden [shell-script] <address@hidden>:
 

Olá Pessoal!!!

Boa Tarde!!!

Desculpem a demora, mas primeiramente quero agradecer a ajuda de todos do grupo, agora o script está funcionando certinho, eu utilizei o seguinte formato:

find /data/dbc/prod/ -mmin +240 -type f -exec rm -f {} \+

Obrigado.

Att,

Wanderson

Em 19 de dezembro de 2014 18:15, Luiz Gustavo Rodrigues de Oliveira address@hidden [shell-script] <address@hidden> escreveu:
 

Olá Wanderson,

  Use o parâmetro ( -type f ) do comando find que ele vai pegar somente arquivos.
  
  find /data/dbc/prod/! -mmin +240 -type f  | /usr/bin/xargs rm -rf

Em 19 de dezembro de 2014 16:50, Wanderson Barrence address@hidden [shell-script] <address@hidden> escreveu:
 

Olá amigos!!!!

Fiz um script para fazer a remoção de arquivos gerados, mantendo somente os arquivos gerados últimas 4 horas, só que em vez de remover somente os arquivos, o script também remove o diretório "prod/"onde arquivos são gerados.

Alguém pode ajudar a corrigir esse script?

find /data/dbc/prod/! -mmin +240 | /usr/bin/xargs rm -rf


Att,

Wanderson





--
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj

reply via email to

[Prev in Thread] Current Thread [Next in Thread]