我需要相當頻繁釋放出一些軟件,該軟件包含作爲VMware的磁盤文件,即.vmdk
文件。 我想要的是某種二進制比較和修補程序實用程序,以使生成的增量儘可能小。二進制diff和補丁程序的虛擬機映像
回答
讓我嘗試和真實的方式開始,然後指出了一些較新的方法。我已經很久很久以前看過的工作與二進制文件
方法,人們擴大了老的二進制文件的新版本爲暫時的「文本」文件(擴展到3個字節的每一個字節: 2個十六進制數字和一個換行符)。 然後通過舊版本的「diff」(絕對無法處理二進制文件)運行這兩個「文本」文件來創建補丁文件。 然後,我們通過尚未完成8位清理的通信線傳輸該「文本」補丁文件。 在接收端,一個擴大了舊的二進制文件到臨時文本版本,然後修補舊的文本文件,然後將壓縮新的文本文件重新導入一個二進制文件(每對十六進制數字壓縮成一個字節,並投擲離開新線和任何可能已經進入的回車)。
最近,我一直在使用rsync(或某些工具建立在它之上,如齊奏)。 它處理任意二進制文件就好了。 我通常會進行實時更新,在我的本地計算機上運行Unison,並在文件服務器上運行rsync,互相交談。
無論如何生成補丁文件,都可以使用任何數據壓縮實用程序來壓縮該文件。
接近的是,據我所知,應該用二進制文件
StackOverflow: "how to crate a PATCH file for the binary difference output file" 建議使用bsdiff工作。
另一個StackOverflow question意味着「vimdiff」同樣似乎充分地處理任意字節。
StackOverflow: "Useful Binary Diff Tool"提到了其他一些二進制差異的工具。
我聽說一些基於rsync的工具 - 「rdiff」和「rdiff-backup」和「duplicity」 - 允許你創建一個補丁文件。 然後接收該修補程序文件的人可以使用它來將其舊的二進制文件更新爲新的二進制文件。
Wikipedia claims最近版本的標準「diff」和「patch」工具支持二進制文件。 你試過嗎?
前沿的研究成果中的可執行文件壓縮
如果你有興趣的前沿研究上使增量文件儘可能小更新可執行文件時,你會想看看 "How Courgette works" The Chromium Projects 2009年的Stephen Adams 2009年的作品 。
其中,接收補丁的計算機「拆卸」舊應用程序,將所有絕對地址和偏移量轉換爲符號;然後修補反彙編的代碼;然後將修補的代碼「重新組裝」到應用程序的新版本中。
嘗試xdelta。
我正在爲超大文件尋找一些二進制diff工具(一個LVM邏輯卷及其快照,因爲LVM不支持快照快照)並且xdelta對我很有用。
- 1. Azure虛擬機和SQL映像
- 2. 虛擬機映像中的虛擬機映像全屏不起作用
- 3. 具有SQL映像的Azure虛擬機
- 4. 虛擬機進程和主機os進程的區別?
- 5. 在使用二進制補丁時更新已安裝的程序版本?
- 6. 在C#中創建Delta Diff大塊二進制文件修補程序
- 7. C# - 統一的diff /補丁創作者
- 8. Azure虛擬機映像加入域
- 9. 安裝與虛擬機映像
- 10. 補丁與進程替換
- 11. 創建Chromium diff aka補丁安裝程序
- 12. 更改純虛擬到虛擬,保持二進制兼容的
- 13. 程序exectuion進程和虛擬內存
- 14. 虛擬機映像中的訪問頁面而不是虛擬機角色?
- 15. 蟒蛇DIFF SequenceMatcher - 打補丁列表
- 16. 補丁對diff文件過於嚴格
- 17. 是否有知道縮進的diff工具(補丁)?
- 18. 編輯(補丁)在IDA的二進制文件臨
- 19. 二進制補碼
- 20. 使用9個補丁映像代替mdpi/ldpi/hdpi/xhdpi映像
- 21. 管理程序和Java虛擬機
- 22. IDA Pro CommandLine補丁程序
- 23. 有沒有支持64位的Smalltalk虛擬機和/或映像?
- 24. 虛擬化中機器映像和實例之間的區別?
- 25. git格式的補丁可以用於補丁程序嗎?
- 26. 將ESXi虛擬機映像複製到vSphere
- 27. 如何限制Apache模塊(處理程序)到虛擬主機(虛擬主機)
- 28. 二進制補碼的Tmax和Tmin
- 29. 如何控制Hyper-V虛擬機控制檯中的進程?
- 30. 從模擬補丁/ Python中
非常感謝你的親切解釋,大衛。 對於我的問題,經過多次實驗後xdelta成爲我的選擇。 – tianyapiaozi