bdiff tampaknya tersedia di Linux (setidaknya sebagai bagian dari Heirloom Toolchest ).
beda
Saya mungkin hanya akan menggunakan diff lama biasa dengan switch ini:
diff --speed-large-files bigfileA bigfileB
Kenapa itu tidak berhasil?
Lihat komentar oleh @EvanTeitelman, --speed-large-files
tidak memengaruhi cara file dimuat ke dalam memori.
Dapat ditunjukkan / dikonfirmasi untuk tidak bekerja menggunakan perintah berikut:
fallocate -l 10G testa; fallocate -l 10G testb && \
diff --speed-large-files -a testa testb
bsdiff
Sulit untuk mengkonfirmasi ini, tetapi saya menemukan alat yang disebut bsdiff
berasal bdiff
. Saya telah mengkonfirmasi bahwa alat ini ada di Ubuntu, cukup apt-get install bsdiff
.
Mengapa ini bisa berhasil?
Sekali lagi terima kasih @EvanTeitelman di komentar, di bsdiff
atas adalah alat diff untuk file biner. bsdiff
adalah alat diff biner dan dapat menangani file besar. Tidak jelas seberapa besar. Lihat tautan berikut ke utas yang membahas penggunaannya.
riff
Saya pikir Anda juga bisa menggunakan rdiff untuk melakukan ini juga. Rdiff dapat menangani file yang sangat besar.
Buat tanda tangan dari satu file:
rdiff signature A sigs.txt
Gunakan sigs.txt file tanda tangan yang dihasilkan dan file besar B lainnya untuk membuat delta:
rdiff delta sigs.txt B deltaAB.txt
Delta berisi semua info yang Anda perlukan untuk membuat kembali file B ketika Anda baru saja A dan file delta deltaAB.txt.
Untuk membuat ulang B, jalankan:
rdiff patch A deltaAB.txt B
Mengapa ini berhasil?
Saya menemukan posting blog ini berjudul: Perbedaan yang Lebih Baik Atau Apa yang Harus Dilakukan Ketika perbedaan GNU Kehabisan Memori ("diff: memory habis") , yang melaporkan bahwa file 4,5GB hanya mengkonsumsi ~ 66MB RAM.
lfhex
lfhex adalah aplikasi untuk melihat dan mengedit file dalam teks hex, oktal, biner, atau ascii. Kekuatan utama lfhex adalah kemampuannya untuk bekerja dengan file yang jauh lebih besar daripada memori sistem. Namun itu adalah alat GUI.
tangkapan layar
Referensi