.net Rsyncable压缩库

.net Rsyncable压缩库,.net,compression,gzip,zlib,.net,Compression,Gzip,Zlib,您能给我推荐一个Windows.NET库,它允许压缩与rsync兼容的数据,即以gzip-rsyncable的方式运行。我发现zlib的一些请求更改,但似乎还没有实现。 我尝试使用一些并行压缩算法,认为它可以独立地对块进行压缩,但没有运气,原始文件中的任何更改都会使压缩后的文件完全更改 ->编辑 我抓取了一个DotNetZip库,它公开了ZLib同步模式,并将其与4096的恒定缓冲区和同步刷新模式一起使用,但同样,即使输入文件中的一个小更改也会使输出文件完全不同。我会做错什么 使用var inp

您能给我推荐一个Windows.NET库,它允许压缩与rsync兼容的数据,即以gzip-rsyncable的方式运行。我发现zlib的一些请求更改,但似乎还没有实现。 我尝试使用一些并行压缩算法,认为它可以独立地对块进行压缩,但没有运气,原始文件中的任何更改都会使压缩后的文件完全更改

->编辑

我抓取了一个DotNetZip库,它公开了ZLib同步模式,并将其与4096的恒定缓冲区和同步刷新模式一起使用,但同样,即使输入文件中的一个小更改也会使输出文件完全不同。我会做错什么

使用var inputStream=new FileStreamfile.in,FileMode.Open 使用var outputStream=new FileStreamfile.out,FileMode.Create { 使用var压缩机=新的DeflateStreamoutputStream,Ionic.Zlib.CompressionMode.Compress { 字节[]缓冲区=新字节[4096]; int n; 而n=inputStream.Readbuffer,0,buffer.Length>0 { compressor.FlushMode=FlushType.Sync; 压缩器。写入缓冲区,0,n; 压缩机。冲洗; //实际上,不需要刷新,DeflateStream会在每次写入时自动刷新。 } } } 您可以使用它,它已经提供了您所需要的一切。这只是插入Z_SYNC_FLUSH刷新的问题,足够频繁,但不太频繁,由未压缩数据中的模式触发

您可以查看中的示例,使用非常简单的输入数据哈希,查找12位模式。您可以使用13位,以减少压缩影响。请参阅注释。

您可以使用它,它已经提供了您所需的一切。这只是插入Z_SYNC_FLUSH刷新的问题,足够频繁,但不太频繁,由未压缩数据中的模式触发


您可以查看中的示例,使用非常简单的输入数据哈希,查找12位模式。您可以使用13位,以减少压缩影响。请参阅注释。

当您进行同步时,同步不能只是周期性的。它必须依赖于输入数据。您需要阅读我提供的源代码链接。@gregi您是否在.NET中成功实现了rsyncable defalte压缩,您可以共享代码吗?@Stritof我做到了,并从中创建了一个nuget库:当您进行同步时,不能简单地定期进行。它必须依赖于输入数据。您需要阅读指向我提供的源代码的链接。@gregi您是否在.NET中成功实现了rsyncable defalte压缩,您可以共享代码吗?@Stritof我做到了,并用它制作了一个nuget库: