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.
-
Crie uma assinatura de um arquivo:
rdiff signature A sigs.txt
-
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
-
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