Compression 流式、就地二进制修补
我有一系列大型二进制文件,每个文件都是通过修改前一个文件生成的。它们存储在服务器上。服务器只是一个哑文件存储,我们不能在上面运行程序 为了节省空间,我想将它们存储为diff。下载文件时会出现问题:文件太大,客户端上没有足够的磁盘空间来存储原始文件和差异文件 是否有一种diff算法允许我们将原始文件下载到磁盘,然后在从服务器流式传输时应用补丁?AUI,xdelta和rdiff都不能修改原始文件,只能创建一个新副本,这将占用太多的磁盘空间。很遗憾,简短的回答是否定的。不过 就地修补的问题是插入和引用旧数据的混合。插入需要移动现有数据,以便有足够的位置进行插入,也就是说,向后复制文件的结尾,在一般情况下,速度会非常慢,在最坏的情况下,会采用文件本身的大小。对旧数据的引用需要非常谨慎,以减少最坏的情况 有了所有的限制,使这在客户端上成为可能,并且在补丁期间占用空间方面具有真正的优势,补丁可能比xdelta或rdiff要大得多。修补过程也会慢得多 智能服务器的一种可能性是: 将所有补丁组成一个元补丁 流式传输动态修补的原始文件,从而在线路上进行重新编译 简短的回答是遗憾的不。尽管 就地修补的问题是插入和引用旧数据的混合。插入需要移动现有数据,以便有足够的位置进行插入,也就是说,向后复制文件的结尾,在一般情况下,速度会非常慢,在最坏的情况下,会采用文件本身的大小。对旧数据的引用需要非常谨慎,以减少最坏的情况 有了所有的限制,使这在客户端上成为可能,并且在补丁期间占用空间方面具有真正的优势,补丁可能比xdelta或rdiff要大得多。修补过程也会慢得多 智能服务器的一种可能性是: 将所有补丁组成一个元补丁 流式传输动态修补的原始文件,从而在线路上进行重新编译Compression 流式、就地二进制修补,compression,diff,Compression,Diff,我有一系列大型二进制文件,每个文件都是通过修改前一个文件生成的。它们存储在服务器上。服务器只是一个哑文件存储,我们不能在上面运行程序 为了节省空间,我想将它们存储为diff。下载文件时会出现问题:文件太大,客户端上没有足够的磁盘空间来存储原始文件和差异文件 是否有一种diff算法允许我们将原始文件下载到磁盘,然后在从服务器流式传输时应用补丁?AUI,xdelta和rdiff都不能修改原始文件,只能创建一个新副本,这将占用太多的磁盘空间。很遗憾,简短的回答是否定的。不过 就地修补的问题是插入和引用
实现思想同步差异: 将数据裁剪成固定大小的多个块; 计算需要保留在旧数据中的块;可以使用同步算法 按新数据顺序将保留块排序到新位置; 下载缺失的区块进行填充;
其中,最困难的是优化排序块的速度,需要充分利用内存或剩余磁盘空间,以尽量减少磁盘I/O;的实现思路同步差异: 将数据裁剪成固定大小的多个块; 计算需要保留在旧数据中的块;可以使用同步算法 按新数据顺序将保留块排序到新位置; 下载缺失的区块进行填充; 其中,最困难的是优化排序块的速度,需要充分利用内存或剩余磁盘空间,以尽量减少磁盘I/O