Script para comparar conteudo e md5 de dois diretorios diferentes. [RESOLVIDO]

1. Script para comparar conteudo e md5 de dois diretorios diferentes. [RESOLVIDO]

VICTOR KELVIN ALVES DE OLIVEIRA
victorkelvin

(usa Red Hat)

Enviado em 26/02/2016 - 17:37h

Boa tarde pessoal,
Estou começando em shell script, e preciso de uma ajuda.
Tenho 2 diretórios diferentes, que teoricamente têm os mesmos arquivos...
Preciso criar um shell script para comparar a string do nome de cada arquivo contido nessas 2 pastas, em seguida se (pasta1/nome=pasta2/nome) comparar o md5 dos dois arquivos. caso. Na saída eu preciso saber quais arquivos, com mesmo nome, estão com md5 diferentes.



  


2. Script para comparar conteudo e md5 de dois diretorios diferentes.

andre
andregyn

(usa Debian)

Enviado em 26/02/2016 - 18:21h

Boa noite amigo,

Tenho o script que faz exatamente o que você precisa.
Basta trocar alguns comandos.
Segue o script original que está no link: https://www.vivaolinux.com.br/script/Comparar-2-arquivos-e-mostrar-os-itens-diferentes/
#!/bin/bash
arq1=$1
arq2=$2

for x in `cat $arq1`
do
diff=`cat $arq2 | grep -w "$x"`
if [ "$diff" = "" ]
then
echo "$x"
fi
done

Para o seu caso basta fazer algo como:
#!/bin/bash
arq1="/diretorio/1"
arq2="/diretorio/2"

for x in `ls $arq1`
do
diff=`ls $arq2 | grep -w "$x"` #verificando se os nomes sao iguais
if [ "$diff" != "" ]
then
#tirando md5 se os nomes forem iguais
dir1=`md5sum $x |awk {'print $1'}`
dir2=`md5sum /diretorio/2/$x |awk {'print $1'}`
if [ "$dir1" != "$dir2" ]
then
echo "Arquivo md5 direferente no arquivo $x"
fi
#echo "$x" # aqui printaria os nomes diferentes
fi
done

Cara fiz rapidinho, mas acho que funciona, talvez precise de algumas alterações, mas acho que já da para tirar um base.
Qualquer dúvida é só perguntar.


3. Script para comparar conteudo e md5 de dois diretorios diferentes.

andre
andregyn

(usa Debian)

Enviado em 26/02/2016 - 18:34h

Amigo,

Arrumei o script, fiz os testes aqui e funcionou desta forma, segue o script:

#!/bin/bash
arq1="/tmp/a"
arq2="/tmp/b"

for x in `ls $arq1`
do
diff=`ls $arq2 | grep -w "$x"` #verificando se os nomes sao iguais
if [ "$diff" != "" ]
then
#tirando md5 se os nomes forem iguais
dir1=`md5sum /tmp/a/$x |awk {'print $1'}`
dir2=`md5sum /tmp/b/$x |awk {'print $1'}`
if [ "$dir1" != "$dir2" ]
then
echo "Arquivo md5 direferente no arquivo $x"

else
echo "Arquivo md5 igual no arquivo $x"
fi
#echo "$x"
fi
done

Qualquer dúvida e só falar.





4. Re: Script para comparar conteudo e md5 de dois diretorios diferentes.

VICTOR KELVIN ALVES DE OLIVEIRA
victorkelvin

(usa Red Hat)

Enviado em 29/02/2016 - 14:30h

Muito obrigado, era exatamente isso que eu precisava... Só preciso tirar a mensagem de erro que aparece quando tira o md5! Muito grato!



5. Re: Script para comparar conteudo e md5 de dois diretorios diferentes. [RESOLVIDO]

VICTOR KELVIN ALVES DE OLIVEIRA
victorkelvin

(usa Red Hat)

Enviado em 02/03/2016 - 15:15h

Na verdade eu precisaria de uma busca recursiva, onde pegaria os arquivos dentro das subpastas tambem.
a solução encontrada foi a seguinte.

#!/bin/bash
for ARQ1 in `find comparar/ -type f -printf '%f\n'` #fazendo uma busca e pegando somente o nome do arquivo a ser comparado
do
for DIR1 in `find comparar/ -type f | grep "$ARQ1"` #guardando o caminho do arquivo obtido na linha 2
do
ARQ2=`find comparar2/ -type f -printf '%f\n'| grep "$ARQ1"` #procurando segundo arquivo para comparar
DIR2=`find comparar2/ -type f| grep "$ARQ2"` #pesquisando caminho do segundo arquivo
MD5x=`md5sum $DIR1 |awk {'print $1'}` #MD5 do primeiro arquivo
MD5y=`md5sum $DIR2 |awk {'print $1'}` #MD5 do segundo arquivo
if [ "$MD5x" != "$MD5y" ] #Comparando os 2 arquivos
then
echo "Arquivos com MD5 diferentes: $DIR1 || $DIR2 "
fi
done
done







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts