bdiff sembra essere disponibile su Linux (almeno come parte di Heirloom Toolchest ).
diff
Probabilmente userei semplicemente il vecchio diff diffuso con questo interruttore comunque:
diff --speed-large-files bigfileA bigfileB
Perché non funziona?
Vedi il commento di @EvanTeitelman, --speed-large-files
non influenza il modo in cui i file vengono caricati in memoria.
Può essere dimostrato / confermato di non funzionare utilizzando il seguente comando:
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
bsdiff
Difficile da confermare, ma ho trovato uno strumento chiamato da bsdiff
cui deriva bdiff
. Ho confermato che questo strumento è in Ubuntu, semplicemente apt-get install bsdiff
.
Perché potrebbe funzionare?
Ancora una volta grazie a @EvanTeitelman nei commenti, quanto bsdiff
sopra è uno strumento diff per i file binari. bsdiff
è uno strumento diff binario e può gestire file di grandi dimensioni. Non è chiaro quanto sia grande. Vedi i seguenti collegamenti a una discussione che ne discute l'uso.
rdiff
Penso che potresti anche usare rdiff per fare questo. Rdiff è in grado di gestire file di dimensioni molto grandi.
Crea una firma di un file:
rdiff signature A sigs.txt
Utilizzare il file di firma generato sigs.txt e l'altro grande file B per creare il delta:
rdiff delta sigs.txt B deltaAB.txt
Delta contiene tutte le informazioni necessarie per ricreare il file B quando hai solo A e il file delta deltaAB.txt.
Per ricreare B, esegui:
rdiff patch A deltaAB.txt B
Perché funziona
Ho trovato questo post del blog intitolato: Un diff migliore o Cosa fare quando GNU diff esaurisce la memoria ("diff: memory esaurito") , che riporta che un rdiff di file da 4,5 GB consumava solo ~ 66 MB di RAM.
lfhex
lfhex è un'applicazione per visualizzare e modificare file in testo esadecimale, ottale, binario o ascii. Il principale punto di forza di lfhex è la capacità di lavorare con file molto più grandi della memoria di sistema. È comunque uno strumento GUI.
immagine dello schermo
Riferimenti