vkjmmy 发表于 2021-11-4 14:51:02

压缩文件解压错误之教训

近日下载一个软件,是RAR压缩文件,解压提示压缩文件错误,真以为下载的文件错误,无奈删除。偶然翻看网页,有一个下载文件提示要用5.8以上版本rar解压,见此灵光一现,我的rar解压软件是几十年前的3点几的版本,莫非我这个文件也得用新版解压软件?马上搜索新版rar下载安装,垃圾桶里捡回下载的软件解压,果然OK。几十年用的解压软件一直没问题,这回碰到钉子户了,接受教训了。

JuncoJet 发表于 2021-11-4 15:06:14

5.0之后出了rar2格式
一般压缩到时候默认是rar1,除非可以压缩成rar2

闻太师 发表于 2021-11-4 15:12:46

lxg 发表于 2021-11-4 15:16:23

我的也是这样,前两天坛友给我发来一个画图软件,用以前的压缩软件解压提示错误,后来用新版的就可以了;,走了弯路;

ceceky 发表于 2021-11-4 15:34:18

压缩文件损坏原因

1.压缩用的版本比解压用的高很多,其实文件没坏,误报而已
2.拷压缩文件的优盘有坏块,这是真恶梦

mx-e 发表于 2021-11-4 19:46:12

要与时俱进呀,很多软件都要在一定的时间进行更新的,所以,这应该称之为低级错误。

xiaocake1 发表于 2021-11-4 20:12:45

用7z吧,压缩解压都厉害,关键是开源免费的。
WinRar是付费的,大家手上的大都是和谐版。

ceceky 发表于 2021-11-5 08:45:46

有时用好压等压缩软件打包后,别的软件是打不开的

locky_z 发表于 2021-11-5 08:46:33

解压软件可以装各种形式的,但以后压成压缩文件还是建议压成zip。
zip文件格式是互联网标准,很多系统都内置zip解压,就不用漫天去找解压软件了。
所以不单只考虑自己,还要考虑别人,别的平台,别的电脑。
没必要为了那5%的空间用其他格式(rar/7z),

scu319hy 发表于 2021-11-5 22:36:49

locky_z 发表于 2021-11-5 08:46
解压软件可以装各种形式的,但以后压成压缩文件还是建议压成zip。
zip文件格式是互联网标准,很多系统都内 ...

zip虽然通用,但也老掉牙了,除了兼容性其它各方面都不行
同样一1.5G的游戏数据:
7z+FastLzma2标准压缩,耗时55秒,压缩文件720M,解压速度300MB每秒
7z+FastLzma2快速压缩,耗时50秒,压缩文件755M,解压速度300MB每秒
7z+FastLzma2急速压缩,耗时38秒,压缩文件760M,解压速度300MB每秒

7z+Zstd标准压缩,耗时25秒,压缩文件833M,解压速度630MB每秒
7z+Zstd快速压缩,耗时9秒,压缩文件856M,解压速度630MB每秒
7z+Zstd急速压缩,耗时4秒,压缩文件872M,解压速度650MB每秒

ZIP标准压缩,耗时1分55秒,压缩文件868M,解压速度200MB每秒
ZIP快速压缩,耗时1分06秒,压缩文件869M,解压速度207MB每秒
ZIP急速压缩,耗时13秒,压缩文件887M,解压速度207MB每秒

800MB的小文本:
7z+FastLzma2标准压缩,耗时27秒,压缩文件236M,解压速度300MB每秒
7z+FastLzma2快速压缩,耗时25秒,压缩文件237M,解压速度300MB每秒
7z+FastLzma2急速压缩,耗时21秒,压缩文件241M,解压速度300MB每秒

7z+Zstd标准压缩,耗时19秒,压缩文件264M,解压速度600MB每秒
7z+Zstd快速压缩,耗时7秒,压缩文件280M,解压速度600MB每秒
7z+Zstd急速压缩,耗时3秒,压缩文件289M,解压速度600MB每秒

ZIP标准压缩,耗时26秒,压缩文件328M,解压速度200MB每秒
ZIP快速压缩,耗时12秒,压缩文件329M,解压速度205MB每秒
ZIP急速压缩,耗时6秒,压缩文件341M,解压速度205MB每秒

:)

dukedz 发表于 2021-11-8 18:28:13

本帖最后由 dukedz 于 2021-11-8 18:29 编辑

scu319hy 发表于 2021-11-5 22:36
zip虽然通用,但也老掉牙了,除了兼容性其它各方面都不行
同样一1.5G的游戏数据:
7z+FastLzma2标准压 ...

zip 的中文文件名乱码问题很严重,一点都不通用(系统编码不同的时候就会发生,譬如有的人是 UTF-8 编码,有的人用的是 GBK,有的是 BIG5)

rar 7zip 这些都有一个问题:重复压缩,譬如要打包已经压缩过的压缩包等数据,这才是最影响效率的

最理想的还是 linux 常用的 tar 及配套的压缩,已经压缩过的数据,直接用 tar 打包就好,没有压缩

需要压缩的话,常用的是 tar.bz2

压缩率需要非常高的话,则选择 tar.xz

这些 tar 包,windows 的 winrar、7zip 等软件都可以支持解压,同时没有 zip 乱码的问题

scu319hy 发表于 2021-11-9 13:13:18

dukedz 发表于 2021-11-8 18:28
zip 的中文文件名乱码问题很严重,一点都不通用(系统编码不同的时候就会发生,譬如有的人是 UTF-8 编 ...

用做备份数据,tar是很不错的。因为它原本就是设计给磁带备份数据用的顺序存储格式。但当作普通的压缩文件来用,它还是不太方便。

首先,你说的编码问题它也有。只不过是目前linux系统默认使用utf-8编码,打包出来的tar也基本都是使用utf-8编码。
这是因为目前所有常用的压缩文件的设计者都是外国人,他们设计之初都没有考虑文本编码的问题。
早期的压缩软件也都是外国作者,他们实现软件时也没有考虑这个问题。
再加上Windows为utf-16内核,而压缩文件多使用char数组保存文件名,没有任何规范要求软件作者如何编码。于是就有了各种编码满天飞的情况。
但目前比较新的压缩软件多默认使用utf-8编码。已经很少遇到这种问题了。

其次,tar是以记录流的形式保存数据。只适合顺序处理,并且冗余数据较多。它与压缩算法是完全分离的。压缩后的tar文件必须完全解压以后才能使用。
所以用压缩软件打开压缩的tar文件时会有一个解压的过程。越大的文件越明显,又耗时又占用磁盘空间。要单独解压其中部分内容时也必须把整个压缩包解压一次。如果要修改其中部分内容则更费时费力。而rar,zip,7z这类结构化的压缩格式就能避免这种问题。

再次,你所说tar针对压缩文件可以只存储不重复压缩。这个反而是它的问题。tar把压缩算法与数据进行了隔离。压缩算法无法识别数据是否可压缩。在压缩时才真的是要全部重新压缩一次。而无论是rar还是zip,7z都可以做到自动识别每个文件的数据类型,进而选择适合的压缩算法,甚至是只做存储不进行压缩。针对性的对每个文件选择不同的压缩算法可以有效提升压缩率以及压缩性能。

tar的优势就是它的流式结构--可以顺序处理,对于只能顺序存储和读取的场合非常适用。比如:它可以边压缩边传输边解压。但它的问题也是其流式结构带来的。无法实现有效的随机访问,无法高效的修改等。

另外rar,zip,7z都有一些高阶功能是tar所不具备的。比如:数据加密,数据恢复记录等。当然,按linux的哲学,加密和数据恢复功能都可以通过第三方软件对数据流过滤来实现搞成如tar.crypted.recovery.gz这种格式 ;P

ceceky 发表于 2021-11-9 15:38:16

要兼容性的话,windows自带的zip功能多香

dukedz 发表于 2021-11-9 16:35:57

本帖最后由 dukedz 于 2021-11-9 16:38 编辑

scu319hy 发表于 2021-11-9 13:13
用做备份数据,tar是很不错的。因为它原本就是设计给磁带备份数据用的顺序存储格式。但当作普通的压缩文 ...

我研究的没你这么深
我实际使用的经验就是:
windows gbk 系列编码的用户打的 zip 包,基本上我在 utf-8 的 linux 解压都会乱码;
而我在 utf-8 linux 上打的 tar 系列的包,windows gbk 电脑解压不会乱码。

你说的 7zip 可以识别每个文件类型,自动选择压缩算法,甚至不压缩,我觉得有问题:
譬如一个大文件,开头是不可压缩的数据,后续是可压缩的数据,压缩软件除非把整个文件都检测一下,否则无法得出最适合的压缩算法,而检测本身所需要的时间相当于整个文件压缩一遍;
而 tar 包的话,我自己知道哪些数据可以压缩,哪些不必压缩,压缩力度我也可以自行选择。

关于部分文件解压,我虽然没仔细研究,应该是有办法不需要解压全部数据的:
对于 tar 包来说,虽然开头没有集合文件 list,但依然可以快速跳转并定位到目标文件(除非小文件数量非常多,否则效率不会低);
如果是带压缩的 tar.bz2 等包,压缩的时候是按照 block 大小来分段压缩的,block 的大小是已知的,所以依然可以快速定位到目标文件的位置,譬如解压第一个 block 知道第一个文件的大小,就知道要跳过多少 block 了,但是压缩过的 block 大小不相同,可能要依次查找并跳过,跳过的 block 本身不用解压。
真要打包大文件,最外面最好用不带压缩的 tar,譬如打包视频、音频,音视频文件本来就不应该重复压缩。

对于加密,使用 zip、rar、7zip 等通用的压缩格式反而不方便、不安全,譬如敏感的文件名称漏掉加密,又譬如加了密的压缩包,如果含有 exe 等可执行文件,gmail 邮箱等都不允许发送,如果文件名也加了密,则默认你有打包敏感内容,不允许传送。
又或者,你传送成功,但被第三方监听到,那么坏人很可能用各种手段破解或迫你说出密码。

而我用开源的小工具加密,没有人知道加密后的文件是什么东西,就算猜到是加密数据,也不知道是用么软件加密的,而且我写的开源 H5 加密工具,可以做到用一个网址连接,分享文字、图片、视频、文件给数码小白,即便小白是不知道什么是压缩包、不怎么会操作电脑和手机的老人,打开连接就可以看到内容,不用安装任何软件,介绍: https://blog.d-l.io/cde

这个软件源码 tools 目录下还有另一个 aes-mount.sh 脚本小工具,可以把一个文件和一个目录映射起来,目录里面是解密后的内容,文件则是整个目录加密后的数据,读写目录实际上是在读写目录对应的文件(空中加密)。只有在需要使用的时候,输入正确的密码,这个明文目录才会出现。
面向专业用户,比用压缩软件加密方便很多。
页: [1]
查看完整版本: 压缩文件解压错误之教训