Localiza todos os arquivos duplicados por hash MD5

7

Estou tentando encontrar todos os arquivos duplicados (com base no hash MD5) e ordenados por tamanho de arquivo. Até agora eu tenho isso:

find . -type f -print0 | xargs -0 -I "{}" sh -c 'md5sum "{}" |  cut -f1 -d " " | tr "\n" " "; du -h "{}"' | sort -h -k2 -r | uniq -w32 --all-repeated=separate

A saída disso é:

1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture2.sh
1832348bb0c3b0b8a637a3eaf13d9f22 4.0K   ./picture2.s

d41d8cd98f00b204e9800998ecf8427e 0      ./test(1).log

Esta é a maneira mais eficiente?

    
por Jamie Curran 14.10.2012 / 23:31

3 respostas

7

De "man xargs": -I implica em -L 1 Então isso não é mais eficiente. Seria mais eficiente se você fornecesse tantos nomes de arquivos para o md5sum quanto possível, o que seria:

find . -type f -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

Então você não terá o tamanho do arquivo, é claro. Se você realmente precisar do tamanho do arquivo, crie um script de shell, que faz o md5sum e o du -h e mescle as linhas com join .

    
por 15.10.2012 / 00:56
0

Às vezes, estamos trabalhando em conjuntos reduzidos de comandos do Linux, como o busybox ou outras coisas que vêm com o NAS e outros hardwares embarcados do Linux (IoTs). Nesses casos, não podemos usar opções como -print0 , obtendo problemas com namespaces. Então, podemos preferir:

find | while read file; do md5sum "$file"; done > /destination/file

Em seguida, nosso /destination/file está pronto para qualquer tipo de processo, como sort e uniq , como de costume.

    
por 15.05.2016 / 15:46
0

Use btrfs + duperemove ou zfs com dedupe online. Ele funciona no nível do sistema de arquivos e corresponderá a partes de arquivo iguais e, em seguida, usará o CoW do sistema de arquivos para reter apenas um de cada enquanto deixa os arquivos no lugar. Quando você modifica uma das partes compartilhadas em um dos arquivos, ela grava a alteração separadamente. Dessa forma, você pode fazer com que coisas como / media e / backup / media-2017-01-01 consumam apenas o tamanho de cada informação única nas duas árvores.

    
por 30.04.2017 / 17:35