Procurando por ferramentas de desduplicação no Linux, há muitas, veja, por exemplo, esta página wiki .
Quase todos os scripts fazem apenas a detecção, imprimindo os nomes de arquivos duplicados ou removendo os arquivos duplicados vinculando-os a uma única cópia.
Com o surgimento do btrfs, haveria outra opção: criar uma cópia CoW (copy-on-write) de um arquivo (como cp reflink=always
). Não encontrei nenhuma ferramenta que faça isso, alguém conhece a ferramenta que faz isso?
btrfs
deduplication
Peter Smit
fonte
fonte
Respostas:
Eu escrevi bedup para este fim. Ele combina a digitalização incremental de btree com a desduplicação de CoW. Melhor usado com o Linux 3.6, onde você pode executar:
fonte
Eu tentei dormir. Embora seja bom (e tenha alguns recursos diferenciados úteis que possam torná-lo a melhor escolha para muitos), parece verificar a totalidade de todos os arquivos de destino em busca de somas de verificação.
O que é dolorosamente lento.
Outros programas, por outro lado, como rdfind e rmlint, digitalizam de maneira diferente.
O rdfind possui um recurso "experimental" para usar o refluxo btrfs. (E opções "sólidas" para links físicos, links simbólicos etc.)
O rmlint possui opções "sólidas" para btrfs clone, reflink, hardlinks regulares, links simbólicos, exclusão e seus próprios comandos personalizados.
Mais importante, porém, rdfind e rmlint são significativamente mais rápidos. Como em ordens de magnitude. Em vez de varrer todos os arquivos de destino em busca de somas de verificação, ele faz isso aproximadamente:
Outras vantagens do rmlint que conheço:
Comparei o rmlint com o deduperemove - que também verifica cegamente todos os arquivos de destino em busca de somas de verificação. Duperemove levou vários dias no meu volume para concluir (4 eu acho), indo até o máximo. O fmlint levou algumas horas para identificar duplicatas e menos de um dia para deduzi-las com o clone Btrfs.
(Dito isto, qualquer um que se esforce para escrever e oferecer suporte a software robusto e de qualidade, de graça, merece muitos elogios!)
Btw: você deve evitar a deduplicação usando hardlinks regulares como uma solução de desduplicação "geral", a todo custo.
Embora os hardlinks possam ser extremamente úteis em certos casos de uso direcionados (por exemplo, arquivos individuais ou com uma ferramenta que possa verificar tipos específicos de arquivos que excedam um tamanho mínimo - ou como parte de muitas soluções de backup / captura de tela gratuitas e comerciais), pode ser desastroso para "desduplicação" em um sistema de arquivos grande para uso geral. O motivo é que a maioria dos usuários pode ter milhares de arquivos em seu sistema de arquivos, que são binários idênticos, mas funcionalmente completamente diferentes.
Por exemplo, muitos programas geram modelos e / ou arquivos de configurações ocultos (às vezes em todas as pastas que podem ver), que são inicialmente idênticos - e a maioria permanece assim, até que você, usuário, precise que eles não sejam.
Como uma ilustração específica: os arquivos de cache de miniaturas de fotos, que incontáveis programas geram na pasta que contém as fotos (e por boas razões - portabilidade), podem levar horas ou dias para serem gerados, mas tornam fácil o uso de um aplicativo de fotos. Se esses arquivos de cache inicial estiverem todos vinculados, depois você abrirá o aplicativo em um diretório e ele criará um cache grande ... então adivinhe: Agora, TODAS as pastas que possuem um cache vinculado anteriormente, agora têm o cache errado. Potencialmente, com resultados desastrosos que podem resultar em destruição acidental de dados. E também potencialmente de uma maneira que explode uma solução de backup que não reconhece hardware.
Além disso, pode arruinar instantâneos inteiros. O objetivo principal das capturas instantâneas é que a versão "ao vivo" possa continuar a mudar, com a capacidade de reverter para um estado anterior. Se tudo estiver vinculado juntos ... você "reverte" para a mesma coisa.
A boa notícia é que a desduplicação com o clone / reflink do Btrfs pode desfazer esse dano (eu acho - já que durante a verificação, ele deve ver os arquivos vinculados como idênticos ... a menos que tenha lógica para não considerar os links físicos. Provavelmente depende de o utilitário específico que está executando a desduplicação.)
fonte