Linux 解压缩Windows下zip和WinRAR的分卷文件(奇怪的知识点)

两大主流操作系统Windows和Linux有着接近百分百的用户(单指桌面和服务器,特此申明,以防杠精)。

现在很多软件(这里想说的是尤其是游戏软件和专业的软件)和数据都越做越大,而带宽并不能时刻满足我们的需求,或者是分享文件的时候,比如,QQ或者微信分享软件,文档等等数据,会有所限制(微信或者QQ传输文件会对微信和QQ的服务器以及带宽给到压力,因此,会有限制文件的大小的情况),或者某些同学满心欢喜的下载了n多小电影,可某个时刻发现,磁盘满了!!!不能愉快的存储这些小电影了!!!这些情况使得我们并不能自由的共享文件和存储文件,也因此,时常成为我们的痛点,而文件的压缩和解压缩使得这些痛点不那么痛了(虽然仍然显得很麻烦,但至少有了解决这些痛点的方案,不是吗??)。

那么,我们有必要回顾一下压缩和解压缩技术的历史。在互联网之前的DOS时代,受制于硬盘技术的发展,硬盘通常是十分小的(以现在的眼光来看,很多同学会觉得等于没有,毕竟,几百M的硬盘,几百k的软盘,几M的软盘,现如今,很可能一个软件就塞满了),互联网时代的前期呢,电话线拨号,网速几十k的时代本人有幸经历过(暴露了年龄了,惭愧!!!),给朋友分享软件,有的时候会成为不可能完成的任务(一秒几十byte的传输速度可以让人怀疑人生)。也因此,在电脑的初期就有了压缩文件的需求,毕竟,通过压缩技术,节约宝贵的磁盘空间和带宽,会给你带来经济上和时间上的好处。

在Windows是真正的霸主的时代(80年代到21世纪初),曾经有过很多压缩软件,但,大浪淘沙,现在主流的压缩软件就剩下WinRAR了,该软件凭借简单,易用,支持的压缩文件种类多,压缩和解压缩方式多,可加密等等特性成为了收费软件(不购买就请你看广告,哈哈,国人一般使用破解版WinRAR,可能大部分人并不知道WinRAR是收费软件,闲话,可忽略)。

说了以上那么多,其实主要就是想说一下,WinRAR的分卷压缩和分卷解压缩功能。

分卷压缩等于是把文件(夹)压缩后自动按照你设定的参数分卷,接压缩指得是分卷压缩的逆向操作。

例如,我有一个20M的文件夹,node14:

Linux 解压缩Windows下zip和WinRAR的分卷文件(奇怪的知识点)_第1张图片

 我想把这个分卷压缩成每个5M的文件,大概应该是这样操作的:

Linux 解压缩Windows下zip和WinRAR的分卷文件(奇怪的知识点)_第2张图片

压缩出的文件上传到Linux服务器内,大概应该是这样的:

[root@centos1 node]# ll
total 26268
-rw-r--r-- 1 root root 5242880 Oct 19 07:52 node14.z01
-rw-r--r-- 1 root root 5242880 Oct 19 07:52 node14.z02
-rw-r--r-- 1 root root 5242880 Oct 19 07:52 node14.z03
-rw-r--r-- 1 root root 5242880 Oct 19 07:52 node14.z04
-rw-r--r-- 1 root root 5242880 Oct 19 07:52 node14.z05
-rw-r--r-- 1 root root  683959 Oct 19 07:53 node14.zip

 



这样的文件在Windows下,解压应该是这样的:

Linux 解压缩Windows下zip和WinRAR的分卷文件(奇怪的知识点)_第3张图片

那么,在Linux下,这些分卷压缩文件怎么解压缩呢?

答案是,在Linux下,没有方法可以解压,但可以有方案解压这些分卷压缩文件!!!!

看了很多博客,都是Linux下cat 所有文件 >新文件  但,其实是么有什么卵用的,因为新的压缩文件并不完整。实验如下:

[root@centos1 node]# cat node14.z* > node-all.zip
[root@centos1 node]# ls -alh
total 52M
drwxr-xr-x   2 root root  134 Oct 20 09:59 .
dr-xr-x---. 11 root root 4.0K Oct 19 07:08 ..
-rw-r--r--   1 root root 5.0M Oct 19 07:52 node14.z01
-rw-r--r--   1 root root 5.0M Oct 19 07:52 node14.z02
-rw-r--r--   1 root root 5.0M Oct 19 07:52 node14.z03
-rw-r--r--   1 root root 5.0M Oct 19 07:52 node14.z04
-rw-r--r--   1 root root 5.0M Oct 19 07:52 node14.z05
-rw-r--r--   1 root root 668K Oct 19 07:53 node14.zip
-rw-r--r--   1 root root  26M Oct 20 09:59 node-all.zip
[root@centos1 node]# unzip node-all.zip 
Archive:  node-all.zip
warning [node-all.zip]:  zipfile claims to be last disk of a multi-part archive;
  attempting to process anyway, assuming all parts have been concatenated
  together in order.  Expect "errors" and warnings...true multi-part support
  doesn't exist yet (coming soon).
warning [node-all.zip]:  26214400 extra bytes at beginning or within zipfile
  (attempting to process anyway)
file #1:  bad zipfile offset (local header sig):  26214404
  (attempting to re-compensate)
   creating: node14/
  inflating: node14/brunch.tar.gz    
  inflating: node14/n.tar.gz         
  inflating: node14/node-v14.17.1-linux-x64.tar.xz  
file #5:  bad zipfile offset (local header sig):  1888779
  (attempting to re-compensate)
file #5:  bad zipfile offset (EOF):  1888779
file #6:  bad zipfile offset (lseek):  30318592
  inflating: node14/systeminfo.sh    
[root@centos1 node]# echo $?
3

可以看到,解压缩后的文件有缺失,并且结果就提示错的,报错:warning [node-all.zip]:  zipfile claims to be last disk of a multi-part archive

当然,换另一种方法还是无效(解压缩后的文件大致只有正常的一半左右):

[root@centos1 node]# zip node14.zip node14.z01 node14.z02 node14.z03 node14.z04 node14.z05 -s=0 --out 2222.zip
  adding: node14.z01 (deflated 0%)
  adding: node14.z02 (deflated 0%)
  adding: node14.z03 (deflated 0%)
  adding: node14.z04 (deflated 0%)
  adding: node14.z05 (deflated 0%)
[root@centos1 node]# ls
2222.zip  node14.z01  node14.z02  node14.z03  node14.z04  node14.z05  node14.zip  node-all.zip
[root@centos1 node]# unzip 2222.zip 
Archive:  2222.zip
   creating: node14/
  inflating: node14/brunch.tar.gz    
  inflating: node14/n.tar.gz         
  inflating: node14/node-v14.17.1-linux-x64.tar.xz  
  error:  invalid compressed data to inflate
 bad CRC d8a765ad  (should be 021ea342)
  inflating: node14/npm.tar.gz       
  inflating: node14/pm2.tar.gz       
  inflating: node14/systeminfo.sh    
replace node14.z01? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
  inflating: node14.z01              
  inflating: node14.z02              
  inflating: node14.z03              
  inflating: node14.z04              
  inflating: node14.z05              
[root@centos1 node]# du -sh node14
14M	node14

 总结起来就是,在Windows下分卷压缩的文件,在Linux下无法解压缩。

那么,有一种解压缩方案,就是搭建Samba服务器,借用Windows的WinRAR,直接将文件解压缩到Linux内。

Samba服务器的搭建没什么好说的,比较基础的东西,只是有几处细节需要注意:

1,用户权限需要做好限制,以保护Linux主机。

2,Linux共享出来的路径需要有要登陆用户的权限。

3,如果怕麻烦,请关闭防火墙和selinux。


简略安装Samba流程




最终效果如下:

Linux 解压缩Windows下zip和WinRAR的分卷文件(奇怪的知识点)_第4张图片

 可以像在Windows下一样,右键解压啦,解压的文件就在 /home/zsk/目录内。

你可能感兴趣的