Detectar e localizar os arquivos duplicados

1. Detectar e localizar os arquivos duplicados

Ede
ede_linux

(usa Ubuntu)

Enviado em 28/04/2016 - 08:48h

Olá,

Preciso de varrer um HD e verificar os arquivos que estão duplicados. Por exemplo: O arquivo listas.odt está duplicado e um está no caminho /hdd/pasta1/pasta2/pasta3 e outro está em /hdd/pasta1/subpasta/4

Existe algum programa para fazer isso? Pensei em fazer um shell script para isto, mas antes gostava de saber se já existe alguma solução para isto!

Obrigado


  


2. Re: Detectar e localizar os arquivos duplicados

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 28/04/2016 - 09:14h

Acredito q vc poderá usar o find pra isso (ou o locate). Se tiver mais d uma ocorrência, estará duplicada. Ex.:


find / -iname "listas.odt"


Se tiver mais d uma ocorrência, vc pode compará-los com o md5sum pra saber se são realmente o mesmo arquivo.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


3. Re: Detectar e localizar os arquivos duplicados

Eduardo
vchacal

(usa Debian)

Enviado em 28/04/2016 - 09:20h

Nunca usei programa pra isso. Porem uma pesquisa rápida me retornou um link que pode lhe ajudar.
https://www.edivaldobrito.com.br/encontrar-e-remover-arquivos-duplicados/

Aqui no VOL achei um interessante, veja o link: https://www.vivaolinux.com.br/artigo/Arquivos-duplicados-fdupes-neles/?pagina=2

Onde eu trabalho, utilizo apenas uma linha de comando que achei em algum lugar no vol mesmo. Localizando os arquivos duplicados e jogando a saida em arquivo texto. Assim disponibilizo para o usuário e ele fica e deve ser responsável em manter seus arquivos em ordem.

find . -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 20 > arquivos_duplicados.txt 





4. Re: Detectar e localizar os arquivos duplicados

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 28/04/2016 - 09:54h

Campacci escreveu:

Nunca usei programa pra isso. Porem uma pesquisa rápida me retornou um link que pode lhe ajudar.
https://www.edivaldobrito.com.br/encontrar-e-remover-arquivos-duplicados/

Aqui no VOL achei um interessante, veja o link: https://www.vivaolinux.com.br/artigo/Arquivos-duplicados-fdupes-neles/?pagina=2

Onde eu trabalho, utilizo apenas uma linha de comando que achei em algum lugar no vol mesmo. Localizando os arquivos duplicados e jogando a saida em arquivo texto. Assim disponibilizo para o usuário e ele fica e deve ser responsável em manter seus arquivos em ordem.

find . -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 20 > arquivos_duplicados.txt 




Hehehe! Então eu estava no caminho certo. Find é mágico, cara!

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


5. Re: Detectar e localizar os arquivos duplicados

Eduardo
vchacal

(usa Debian)

Enviado em 28/04/2016 - 10:18h

renato_pacheco escreveu:


Hehehe! Então eu estava no caminho certo. Find é mágico, cara!

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Sim fera, incluindo o md5sum que você citou!




6. Re: Detectar e localizar os arquivos duplicados

Ede
ede_linux

(usa Ubuntu)

Enviado em 28/04/2016 - 10:30h

Obrigado pelas ajudas,

Estava a pensar utilizar o comando tree para fazer um relatório e no final varrer esse relatório à procurar de duplicados.
Sabem como imprimir com o programa tree apenas os ficheiros? Não imprimir os diretórios?

Obrigado


7. Re: Detectar e localizar os arquivos duplicados

Ronaldo Ferreira de Lima
textmode

(usa Slackware)

Enviado em 28/04/2016 - 10:57h

Quando você executar a linha de comando

find . -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 20 > arquivos_duplicados.txt 


Em "arquivos_duplicados.txt" estarão todos os arquivos cujos 20 primeiros bytes do hash do md5 forem iguais, o hash do md5 tem 32 bytes de comprimento (e pode gerar sequências iguais para arquivos diferentes). É certeza que isto é o que se deseja?



8. Re: Detectar e localizar os arquivos duplicados

Ede
ede_linux

(usa Ubuntu)

Enviado em 28/04/2016 - 11:48h

textmode escreveu:

Quando você executar a linha de comando

find . -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 20 > arquivos_duplicados.txt 


Em "arquivos_duplicados.txt" estarão todos os arquivos cujos 20 primeiros bytes do hash do md5 forem iguais, o hash do md5 tem 32 bytes de comprimento (e pode gerar sequências iguais para arquivos diferentes). É certeza que isto é o que se deseja?


Mas qual é a configuração do ficheiro "arquivos_duplicados.txt"?
Valeu


9. Re: Detectar e localizar os arquivos duplicados

Eduardo
vchacal

(usa Debian)

Enviado em 29/04/2016 - 08:55h

ede_linux escreveu:
Mas qual é a configuração do ficheiro "arquivos_duplicados.txt"?
Valeu


no final do comando > arquivos_duplicados.txt esta apenas direcionando a saída do comando para um arquivo qualquer.
Caso não tenha este redirecionamento o resultado sai em tela certo. Apenas isso colega, o arquivo não tem nenhuma configuração especifica. Você pode criar o arquivo antes, se ele não existir é criado ao fazer o redimensionamento também, pode ser com final .doc e também pode ser qualquer nome.


10. Re: Detectar e localizar os arquivos duplicados

Wellington
wellington_r

(usa Debian)

Enviado em 29/04/2016 - 11:55h

Campacci escreveu:

Onde eu trabalho, utilizo apenas uma linha de comando que achei em algum lugar no vol mesmo. Localizando os arquivos duplicados e jogando a saida em arquivo texto. Assim disponibilizo para o usuário e ele fica e deve ser responsável em manter seus arquivos em ordem.

find . -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 20 > arquivos_duplicados.txt 




Muito bom, cara. Se trabalhar mais nesse script dá até pra adicionar a função de ordenar os itens da lista por ordem de tamanho (do maior para o menor).



--------------------------------------------------------------------------------------------------------------------------------------
admin@server:~$ whatis life
life: nothing appropriate



11. Re: Detectar e localizar os arquivos duplicados

Arthur J. Hoch
Arthur_Hoch

(usa FreeBSD)

Enviado em 29/04/2016 - 11:58h

Dê uma lida no artigo do edps: https://www.vivaolinux.com.br/artigo/Arquivos-duplicados-fdupes-neles/


Talvez seja isso que você procura.


12. Re: Detectar e localizar os arquivos duplicados

Ede
ede_linux

(usa Ubuntu)

Enviado em 13/08/2017 - 05:07h

Olá a todos,

ME desculpem mas é que na altura não percebia o suficiente para entender o excelente script que o Campacci passou! :)


find . -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 20 > arquivos_duplicados.txt


Ok, estive a estudar o script e testei o mesmo e foram estas as conclusões que cheguei. Digam-me s.f. se estou certo, desde já o meu obrigado.

Find - O bom e velho find. Os parâmetros são:

-type f = regular files, imagino que sejam todos os ficheiros comuns
-exec md5sum '{}' ';' = o comando find permite como parâmetro a execução de um programa, neste caso o md5sum. Pelo que percebi, lendo o manual do find, ele vai apenas extrair os resultados que tenham ponto e vírgula no final?!!? Esta parte não percebi.
"This variant of the -exec action runs the specified command on
the selected files, but the command line is built by appending
each selected file name at the end; the total number of invoca‐
tions of the command will be much less than the number of
matched files. The command line is built in much the same way
that xargs builds its command lines. Only one instance of `{}'
is allowed within the command, and (when find is being invoked
from a shell) it should be quoted (for example, '{}') to protect
it from interpretation by shells. The command is executed in
the starting directory. If any invocation returns a non-zero
value as exit status, then find returns a non-zero exit status.
If find encounters an error, this can sometimes cause an immedi‐
ate exit, so some pending commands may not be run at all. This
variant of -exec always returns true."


O comando sort serve para ordenar o resultado do comando find. Não sei qual é o critérios, uma vez que não é passado parâmetros.

uniq
Este comando não conhecia. Serve para reportar ou omitir linhas repetidas. Os parâmetros utilizados permitem separar os grupos com uma linha em branco. Os grupos, neste caso, são os valores repetidos.
Não percebo o conceito de grupos!
Por fim, compara apenas os primeiros 20 caracteres em cada linha, não mais do que isso!

uniq --all-repeated=separate -w 20


Portanto, executamos o find para procurar todos os arquivos. No comando find, como parâmetro executamos o md5sum (para que serve? Penso que seja para ver um número único que identifica cada ficheiro, certo? Pelo que testei me retorna um número como por exemplo "490a3ffe1d99ebf2ea0da0509a1b4cd6"). Ordenamos todos os resultados do comando find. Por fim, todos os valores repetidos são separados em grupos por uma linha em branca. Basta a linha ter os primeiros valores repetidos, que neste caso é o resultado do md5sum, que ele identifica como repetido.

Exemplo de um valor recolhido do md5sum 5fef2f84638fd071fd1e20f8ade591c5

É isto?
Obrigado pelas dicas








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts