go-bsdiff和go-xdelta对比
约 438 字大约 1 分钟
2025-04-13
前提条件
- 准备有改动的 text 文件
- 准备有改动的 bin 文件
- go-xdelta 自动获取最优块大小 (upgrade.go)
- go-bsdiff 无需指定块大小 (patch.go)
Get-ChildItem -Recurse | Select-Object FullName, Length | Export-Csv -Path filelist.csv -NoTypeInformation"FullName","Length"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\filelist.csv","0"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\newFile.txt","610657"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\oldFile.txt","608256"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.go","2130"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\upgrade.go","8362"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\V3.00.bin","917328"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\V3.60.bin","917328"对比text
./upgradeReWi create-patch ./tools/oldFile.txt ./tools/newFile.txt ./tools/patch.xd
./upgradeReWi diff ./tools/oldFile.txt ./tools/newFile.txt ./tools/patch.patch"FullName","Length"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.patch","208"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.xd","179"由差异文件升级出的新文件
./upgradeReWi apply-patch ./tools/oldFile.txt ./tools/newFile_1.txt ./tools/patch.xd --block-size 128
# Error: 补丁应用失败: 文件完整性校验失败: 目标文件过小(可能不完整),目标大小: 610657,源大小: 608256
./upgradeReWi patch ./tools/oldFile.txt ./tools/newFile_2.txt ./tools/patch.patch"FullName","Length"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\newFile.txt","610657"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\newFile_2.txt","610657"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\oldFile.txt","608256"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.patch","208"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.xd","179"对比 bin
./upgradeReWi create-patch ./tools/V3.00.bin ./tools/V3.60.bin ./tools/patch.xd
./upgradeReWi diff ./tools/V3.00.bin ./tools/V3.60.bin ./tools/patch.patch"FullName","Length"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.patch","18376"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.xd","50053"由差异文件升级出的新文件,内容准确
./upgradeReWi apply-patch ./tools/V3.00.bin ./tools/V3.61.bin ./tools/patch.xd --block-size 4
./upgradeReWi patch ./tools/V3.00.bin ./tools/V3.62.bin ./tools/patch.patch"FullName","Length"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.patch","18376"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\patch.xd","50053"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\V3.00.bin","917328"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\V3.60.bin","917328"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\V3.61.bin","917328"
"D:\cygwin64\home\ReWi\GoKitReWi\tools\V3.62.bin","917328"总结
- text 时,go-xdelta 还原失败,go-bsdiff 成功
- bin 时,go-xdelta 还原成功,go-bsdiff 成功,差异文件 go-bsdiff 较小
- 稳定性、便捷性、调试效率,选择 go-bsdiff
