Maneiras de desduplicar arquivos


10

Quero simplesmente fazer backup e arquivar os arquivos em várias máquinas. Infelizmente, os arquivos têm alguns arquivos grandes que são o mesmo arquivo, mas armazenados de maneira diferente em máquinas diferentes. Por exemplo, pode haver algumas centenas de fotos que foram copiadas de um computador para outro como um backup ad-hoc. Agora que quero criar um repositório comum de arquivos, não quero várias cópias da mesma foto.

Se eu copiar todos esses arquivos em um único diretório, existe uma ferramenta capaz de reconhecer e duplicar arquivos duplicados e fornecer uma lista ou até excluir uma das duplicatas?


Respostas:


3

Crie um md5sum de cada arquivo, os duplicados sugerem (mas não garantem) arquivos duplicados.


11
eles fazem fortemente "sugerir", no entanto :) ..e se os arquivos são do mesmo tamanho, a probabilidade da sugestão estar correta é excepcionalmente alta
Warren

2

Você pode usar o dupemerge para transformar os arquivos idênticos em hardlinks. No entanto, levará muito tempo em um conjunto de arquivos grandes. Os hashes SHA (ou MD5) dos arquivos quase certamente funcionarão mais rapidamente, mas você terá que fazer mais trabalho para encontrar as duplicatas. A probabilidade de colisão acidental é tão baixa que, na realidade, você pode ignorá-la. (De fato, muitos produtos de desduplicação já fazem isso.)

Sua melhor aposta para lidar com fotos e música é obter ferramentas personalizadas para encontrar duplicatas desses itens em particular. Especialmente porque você pode não ter arquivos idênticos em nível binário depois que coisas como marcação, corte ou diferenças de codificação entram em jogo. Você precisará de ferramentas que possam encontrar fotos que "pareçam iguais" e músicas que "soem" iguais, mesmo se pequenos ajustes foram feitos nos arquivos.


11
hardlinké muito rápido (levou 200 segundos para 1,2 milhões de arquivos, 320GB)
Marcel Waldvogel

1

Bem, se você tiver a capacidade, poderá configurar um sistema de arquivos com redução de duplicação e colocar seus backups nisso. Isso não apenas desduplicará arquivos inteiros, mas também arquivos semelhantes. Por exemplo, se você tiver o mesmo JPEG em vários locais, mas com diferentes tags EXIF ​​em cada versão, um sistema de arquivos com deduplicação armazenará os dados da imagem apenas uma vez.

Os sistemas de arquivos com redução de redundância incluem lessfs, ZFS e SDFS.


11
Não posso falar sobre desduplicação no SDFS ou lessfs, mas o Dedupe no ZFS não funciona assim. Ele verifica o nível do bloco; portanto, arquivos idênticos provavelmente serão sinalizados para deduplicação, mas arquivos que têm um cabeçalho diferente provavelmente não. Além disso, os arquivos menores que o tamanho do seu registro ZFS (o padrão é 128 KB) podem ser compactados em um único bloco juntos, portanto, eles também não podem se beneficiar da desduplicação.
Notpeter

O sistema de arquivos deduplicado (zfs ou btrfs) economiza apenas espaço no host de backup. Não economiza a quantidade de dados transferidos. É uma ideia calcular algum hash para arquivos e enviá-lo para o host de backup. quando diz "eu tenho", o backup desse arquivo é feito. Isso é implementado em um software de backup (caro) muito caro. Eu nunca ouvi falar sobre isso em código aberto. Mas talvez ele é implementado no agora, quem sabe :)
Znik

O @Znik rsync --link-desté seu amigo se você quiser economizar na leitura / transferência também. Uma introdução simples é aqui: netfuture.ch/2013/08/…
Marcel Waldvogel

está funcionando testando inodes atribuídos a um arquivo. mas quando a desduplicação está oculta, por exemplo, no sistema de arquivos squashfs, o rsync não pode verificar isso e transferirá os mesmos dados várias vezes.
Znik 22/02

0

Quando eu estava fazendo esse tipo de coisa, aprendi que é muito mais envolvente / eficiente em termos de tempo apenas analisar os arquivos você mesmo no seu tempo livre, ao longo de algumas semanas. Você pode dizer a diferença entre as coisas muito melhor do que o seu computador.

Se você não concorda, sugiro o EasyDuplicateFinder . Como mencionei acima, porém, levará muito tempo, digamos, cerca de um dia para 5 GB de arquivos.

E, por outro lado, o Crashplan faz o que você estava fazendo antes, mas de uma maneira muito mais organizada e sem problemas de versão.


0

Outra possibilidade, presumindo que as máquinas das quais você está fazendo backup suportá-las, é usar algo como isso rsync.

Se você rsyncde A a B, de C a B, de D a B, etc., duplicatas exatas (por nome de arquivo) serão eliminadas (e sincronizadas entre as máquinas que você está fazendo backup).

Se você não deseja que todos estejam sincronizados, este não é o melhor caminho a percorrer.


0

Para arquivos de imagem, use findimagedupes . Também é empacotado no debian .


findimagedupes é para fotos ou gráficos, talvez convertidos de um formato para outro. photos (i home) é apenas um exemplo em questão. Pode haver outros arquivos grandes.
Znik

0

Os links físicos só executam desduplicação se o arquivo inteiro for idêntico. Se os cabeçalhos (EXIF, ID3,…) ou os metadados (proprietário) diferirem, eles não serão vinculados.

Quando você tiver a chance de usar um sistema de arquivos com suporte à desduplicação de bloco (ZFS, btrfs,…), use-o. Gosto muito do suporte à desduplicação offline (também conhecido como lote ) do btrfs, que oferece suporte à desduplicação no nível da extensão e não consome constantemente grandes quantidades de memória (como a desduplicação online do ZFS).

A desduplicação também tem a vantagem de que os arquivos podem ser modificados pelo usuário sem que a outra cópia seja notada (o que pode não ser aplicável no seu caso, mas em outros).

Veja https://btrfs.wiki.kernel.org/index.php/Deduplication para uma excelente discussão.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.