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

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

Re: [shell-script] Verificando a integridade de arquivos com nomes com e


From: Raphael R. O.
Subject: Re: [shell-script] Verificando a integridade de arquivos com nomes com espaços
Date: Wed, 16 May 2012 13:55:29 -0300

Julio, que dica excelente!!

Estava acompanhando o topico, porque tenho um script parecido, mas com
objetivo diferente...
No meu caso, eu tenho que ter uma pasta com os mesmos arquivos em 3
servidores, eu controlava isso gerando uma lista de md5sum dos arquivos da
pasta de cada máquina, e depois comparava os 3 arquivos de textos que eram
gerados, afim de encontrar alguma divergência.

find /home/files -type d -path '/home/files/default' -prune -o -type f
-exec md5sum '{}' \;

real    0m43.133s
user    0m1.058s
sys     0m0.457s

Fiz o teste com o \+ e a diferença foi absurda!

find /home/files -type d -path '/home/files/default' -prune -o -type f
-exec md5sum '{}' \+

real    0m4.754s
user    0m0.733s
sys     0m0.239s

Realmente uma dica de ouro! Quando tiver um curso em SP pode contar comigo
hehehe :P

Abs
*Raphael Rabelo*
*Fone:* (11) 6105-8257
*MSN:* address@hidden
*Site:* www.raphaelr.com.br
*LinkedIn*:  <http://www.linkedin.com/profile/view?id=79847968>

 Pense antes de imprimir este e-mail.



2012/5/16 Julio C. Neves <address@hidden>

> Fala Adelnir,
> o problema é que o xargs bota atrás do md5sum (com todo respeito ;) o que
> recebe da entrada primária (via pipe). Se ele receber um arquivo chamado
> 'nome ruim', após o xargs será executado:
>
> md5sum nome ruim
>
> isto é *tentará* calcular o md5 de 2 arquivos que não existem. Isso
> funcionaria se o espaço estivesse protegido e para fazê-lo usando o xargas,
> a linha de cmds deveria ser:
>
> $ find $1 -type f | xargs -i md5sum {} | awk '{print $1":"$2}'
>
> Mas isso ficaria muito mais que a tua solução com find puro e usando a ação
> -exec. Para resolver esse problema de lentidão, basta vc envenenar o teu
> find e para fazer isso, basta trocar o ponto-e-vírgula (;) do final, por um
> mais (+).
>
> find $1 -type f -exec {} md5sum \+ | awk '{print $1":"$2}'
>
> Não requer prática nem habilidade ;). Teste os tempos usando as 3 hipóteses
> e te peço que depois os informe nessa lista, para que todos aprendam esse
> macete muito pouco utilizado do find. Já dando mastigado:
>
> $ time find $1 -type f | xargs -i md5sum {} | awk '{print $1":"$2}'
> $ find $1 -type f -exec {} md5sum \; | awk '{print $1":"$2}'
> $ find $1 -type f -exec {} md5sum \+ | awk '{print $1":"$2}'
>
> O tempo do último será menor, pq nos 2 primeiros o md5sum será carregado a
> cada arquivo encontrado e no último será carregado somente uma vez. Assim
> sendo, qto mais arquivos houverem no dir $1, maior será a diferença de
> tempo de execução.
>
> PS: o curso que darei no RJ, aborda isso tudo. ;) Inscreva-se! restam
> somente 2 vagas.
>
> Abcs,
> Julio
>
> *
> *
>
>
>
> Em 15 de maio de 2012 19:45, andelnyr <address@hidden> escreveu:
>
> > **
> >
> >
> > Prezados
> >
> > Estou tentando controlar as alterações realizadas por usuários em seus
> > computadores com a seguinte estratégia:
> >
> > Ao configurar uma máquina, gero um arquivo de verificação com o seguinte
> > script:
> >
> > #!/bin/bash
> > find $1 -type f | xargs md5sum | awk '{print $1":"$2}'
> >
> > Executo o script e forneço os diretórios que me interessam controlar como
> > argumento e redireciono a saída para um arquivo.
> >
> > Quando sou solicitado a dar manutenção em um destes computadores, a minha
> > primeira providência é rodar o script de verificação e comparar os
> arquivos
> > resultantes.
> >
> > Ocorre que quando tenho arquivos com nomes com espaços o script acima não
> > resolve e passo a usar este:
> >
> > #!/bin/bash
> > find $1 -type f -exec {} md5sum \; | awk '{print $1":"$2}'
> >
> > Ok, ok - obtenho o mesmo resultado, mas fica a pergunta - qual seria a
> > modificação que eu deveria produzir no primeiro script para que ele
> > funcionasse como desejado? Renomear os arquivos não é uma opção.
> >
> > Agradeço antecipadamente a dica.
> >
> >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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