Ada bdiff(1)
perintah di Solaris, yang memungkinkan Anda untuk diff(1)
file dengan ukuran lebih besar dari ukuran RAM Anda ( http://docs.oracle.com/cd/E19683-01/806-7612/files-23/index.html ).
Apakah ada yang seperti itu di Linux? Saya mencoba googling tetapi saya tidak menemukan paket yang ada bdiff
di Ubuntu.
Jawaban:
bdiff tampaknya tersedia di Linux (setidaknya sebagai bagian dari Heirloom Toolchest ).
beda
Saya mungkin hanya akan menggunakan diff lama biasa dengan switch ini:
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:
bsdiff
Sulit untuk mengkonfirmasi ini, tetapi saya menemukan alat yang disebut
bsdiff
berasalbdiff
. Saya telah mengkonfirmasi bahwa alat ini ada di Ubuntu, cukupapt-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:
Gunakan sigs.txt file tanda tangan yang dihasilkan dan file besar B lainnya untuk membuat delta:
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:
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
sumber
-H
sinonim untuk--speed-large-files
.bsdiff
adalah alat diff biner, bukan alat diff file-besar.--speed-large-files
flag tidak memengaruhi cara GNU memuat banyak file ke dalam memori. Coba jalankanfallocate -l 10G testa; fallocate -l 10G testb && diff --speed-large-files -a testa testb
untuk mengonfirmasi ini. (Atau lihat kode sumbernya.)bdiff
dari Heirloom Toolchest setelah diganti/sbin/sh
oleh/bin/sh
di makefiles. Sekarang ketika saya mencoba untuk menjalankannya, saya mengertibdiff: Can not execute '/usr/5bin/diff'
. Maaf, saya tidak ingin memasang apa pun untuk/usr/5bin/
. Ini bukan solusi yang layak. Pilihan lain yang disebutkan di sini tidak berfungsi untuk saya karena saya ingin melihat perbedaan sebagai teks.lfhex -c file1 file2
bekerja dengan baik untuk saya setelah mengatur View -> Editing base -> ASCII untuk kedua panel.