Existe o bdiff (1) no Linux?

9

Existe o comando bdiff(1) no Solaris, que permite a você diff(1) de arquivos com tamanho maior que o tamanho da RAM ( link ).

Existe algo parecido no Linux? Eu tentei googling mas eu não acho qual pacote tem bdiff no Ubuntu.

    
por AntonioK 27.05.2013 / 13:26

1 resposta

13

O bdiff parece estar disponível no Linux (pelo menos como parte do Heirloom Toolchest ).

diff

Eu provavelmente usaria o diff antigo regular com essa opção:

diff --speed-large-files bigfileA bigfileB

Por que não funciona?

Veja o comentário de @EvanTeitelman, --speed-large-files não afeta como os arquivos são carregados na memória.

Pode ser demonstrado / confirmado para não funcionar usando o seguinte comando:

fallocate -l 10G testa; fallocate -l 10G testb && \
        diff --speed-large-files -a testa testb

bsdiff

Difícil confirmar isso, mas eu encontrei uma ferramenta chamada bsdiff que deriva de bdiff . Eu confirmei que esta ferramenta está no Ubuntu, simplesmente apt-get install bsdiff .

Por que isso pode funcionar?

Mais uma vez, obrigado @EvanTeitelman nos comentários, o bsdiff acima é uma ferramenta de comparação para arquivos binários. bsdiff é uma ferramenta de comparação binária e pode lidar com arquivos grandes. Não está claro o quão grande é. Veja os links a seguir para um tópico que discute seu uso.

rdiff

Acho que você também pode usar o rdiff para fazer isso também. O Rdiff é capaz de lidar com arquivos muito grandes.

  1. Crie uma assinatura de um arquivo:

    rdiff signature A sigs.txt
    
  2. Use o arquivo de assinatura gerado sigs.txt e o outro arquivo grande B para criar o delta:

    rdiff delta sigs.txt B deltaAB.txt
    
  3. Delta contém todas as informações necessárias para recriar o arquivo B quando você tem apenas A e o arquivo delta deltaAB.txt.

    Para recriar B, execute:

    rdiff patch A deltaAB.txt B
    

Por que funciona?

Eu encontrei este post no blog intitulado: Um diff melhor ou o que fazer quando o GNU diff fica sem memória (" diff: memory exhausted ") , que relata que um rdiff de 4.5GB arquivos consumiram apenas ~ 66MB de RAM.

lfhex

lfhex é um aplicativo para visualizar e editar arquivos em texto hexadecimal, octal, binário ou ascii. A principal força do lfhex é a capacidade de trabalhar com arquivos muito maiores que a memória do sistema. É uma ferramenta gráfica no entanto.

captura de tela

Referências

  • Comparação das ferramentas de comparação - wikipedia
por 27.05.2013 / 14:03

Tags