看了个文章,说7z压缩文件损坏后无法恢复。建议使用zip/rar格式
吾一直使用7zip。后来看文章说,7zip压缩算法,如果文件出现一点错误,很难恢复。这么一说,吾决定以后统一使用zip格式。 在LINUX上,默认的就是zip/tar,都是zip格式。 压缩软件使用winZip?winRAR?待吾看看。...
吾一直使用7zip。后来看文章说,7zip压缩算法,如果文件出现一点错误,很难恢复。这么一说,吾决定以后统一使用zip格式。
在LINUX上,默认的就是zip/tar,都是zip格式。
压缩软件使用winZip?winRAR?待吾看看。
https://www.zhihu.com/question/23299326/answer/820275787
关于安全的部分如下:
The [LZMA2 format] contains an unrestricted mix of LZMA packets and uncompressed data packets. Each packet starts with a header that is not protected by any check sequence in spite of containing the type and size of the following data. Therefore, every bit flip in a LZMA2 header causes either a framing error or a desynchronization of the decoder. In any case it is usually not possible to decode the remaining data in the block or even to know what failed. Compare this with [Deflate] which at least does protect the length field of its non-compressed blocks. (Deflate's compressed blocks do not have a length field).
我简单解释一下,LZMA2是7z的默认压缩算法,用这种算法压缩文件会产生这么一种情况:
假如一个普通文件内容是「ABCDEFG」,然後它第二个字节损坏了,我们看到的就是「A?CDEFG」。但如果这是一个使用了LZMA2算法的7z压缩包,我们看到的就是「A??????」。
Therefore, every bit flip in a LZMA2 header causes either a framing error or a desynchronization of the decoder. In any case it is usually not possible to decode the remaining data in the block or even to know what failed.
翻译:因此,在LZMA2报头中的每个位翻转都会引起解码器的帧错误或者同步失调。在所有情况下,通常都不可能解码块中的剩余数据,甚至都不知道哪里错了。
最後,这位大佬给出的建议是:不要用LZMA2算法储存重要文件。
也就是说,如果你坚持使用7z格式,那么你就祈祷吧,祈祷压缩包裡一个字节错误都不要有。因为只要出现一个字节错误,整个压缩包就废了。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)