Saya punya dua gambar partisi (A dan B) dan ingin menggunakannya untuk membuat tambalan yang dapat saya terapkan pada A di komputer lain untuk mendapatkan gambar B baru tanpa membanjiri jaringan. Saya memiliki persyaratan berikut:
- bekerja di Linux
- dapat membuat diff
- dapat menggunakan diff untuk menambal file
- dapat menangani file biner
- dapat menangani file besar (beberapa ratus GB seharusnya berfungsi)
- tidak diperlukan interaksi pengguna (hanya aplikasi konsol)
- idealnya, harus dapat membaca dari / menulis ke pipa (sehingga saya dapat pipa ke dalamnya dari file yang dikompresi gzip dan menulis ke satu)
Apakah ada yang seperti itu?
rdiff
akan berharga untuk referensi di masa mendatang. Contoh: Katakanlahfile1
danfile2
dua file serupa masing-masing 1GB. 1) Bagaimana cara menghitung rdiff? 2) Bagaimana cara menyimpan rdiff ini ke dalampatch
file? 3) Bagaimana cara menerapkanpatch
file inifile1
untuk memulihkanfile2
?Jawaban:
Anda mungkin harus melihat alat yang berhubungan dengan rsync: rdiff dan rdiff-backup . The
rdiff
perintah memungkinkan Anda menghasilkan file patch dan menerapkannya ke beberapa file lain.The
rdiff-backup
perintah menggunakan pendekatan ini untuk menangani seluruh direktori, tapi aku menebak Anda bekerja dengan file tunggal gambar disk, sehinggardiff
akan menjadi orang yang digunakan.sumber
rdiff signature oldfile | rdiff delta - newfile deltafile
file1
danfile2
dua file serupa masing-masing 1GB. 1) Bagaimana cara menghitung diff? 2) Bagaimana cara menyimpan diff ini ke file patch? 3) Bagaimana cara menerapkan file tambalan inifile1
untuk memulihkanfile2
?xdelta dapat melakukan semua yang Anda inginkan. Peringatan yang adil, jika gambar Anda tidak sangat mirip, Anda dapat berakhir dengan tambalan yang sangat besar, karena xdelta menggunakan setengah dari buffer memori yang ditentukan untuk menemukan perbedaan. Informasi lebih lanjut tersedia di halaman wiki TuningMemoryBudget . Meningkatkan ukuran buffer dapat membantu sedikit.
bsdiff adalah pilihan lain, tetapi RAM sangat lapar dan sama sekali tidak pantas untuk ukuran disk image apa pun.
sumber
Jawaban Kanonik
Mengenai rdiff pos, librsync 2.0.1 adalah bacaan yang baik untuk klarifikasi fungsi perintah jadi saya telah merujuknya di bawah ini untuk menjaga konten untuk jawaban ini jika tidak ada yang lain.
Sangat penting untuk mencoba mendapatkan pemahaman yang baik tentang tiga langkah rdiff untuk memperbarui file: tanda tangan , delta , dan patch yang dibicarakan di halaman manual rdiff . Saya juga menemukan
rdiff
script contoh perintah di GitHub yang membantu yang akan saya referensi dan kutip.Perintah Cepat (per
rdiff-example.sh
)sumber
JDIFF adalah program yang menampilkan perbedaan antara dua file (biner).
sumber