O bdiff parece estar disponível no Linux (pelo menos como parte do Heirloom Toolchest ).
diff
Eu provavelmente usaria apenas diff antigo regular com essa opção no entanto:
diff --speed-large-files bigfileA bigfileB
Por que não funciona?
Veja o comentário de @EvanTeitelman, --speed-large-files
não afeta o modo como os arquivos são carregados na memória.
Pode ser demonstrado / confirmado que não funciona usando o seguinte comando:
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
bsdiff
Difícil de confirmar isso, mas encontrei uma ferramenta chamada da bsdiff
qual deriva 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 diff para arquivos binários. bsdiff
é uma ferramenta diff binária e pode lidar com arquivos grandes. Não está claro o tamanho. Consulte os seguintes links para um tópico que discute seu uso.
rdiff
Eu acho que você também pode usar o rdiff para fazer isso também. 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
O Delta contém todas as informações necessárias para recriar o arquivo B quando você possui apenas A e o arquivo delta deltaAB.txt.
Para recriar B, execute:
rdiff patch A deltaAB.txt B
Por que isso funciona?
Eu encontrei este post no blog intitulado: Uma diferença melhor ou o que fazer quando a diferença GNU fica sem memória ("diff: memória esgotada") , que relata que um riff de arquivos de 4,5 GB consumia apenas ~ 66 MB de RAM.
lfhex
O lfhex é um aplicativo para visualizar e editar arquivos em texto hexadecimal, octal, binário ou ascii. A principal força do lfhex é sua capacidade de trabalhar com arquivos muito maiores que a memória do sistema. É uma ferramenta GUI no entanto.
captura de tela
Referências