linux下解压大于2G的zip文件

作者:iamlaosong

最近一次导入结算数据后,查询结算数据时发现有些数据居然没有,非常奇怪。这个数据导入是先解压压缩包,再用sqlldr导入,查看解压后的数据文件,发现没有转运数据文件,而压缩包中是有的。手工解压压缩包,发现解压到陆运数据文件时报出写入错误,然后解压操作就停止了,所以不仅陆运数据文件数据不全,后面的转运数据文件也没有解压出来。

发生写入错误,而且不是磁盘满了,什么原因呢?压缩包本身并不大,也就200多兆,在Windows下解压这个压缩包,发现陆运数据文件很大,超过2G(2.8G),隐约觉得这是个问题,上网查询果然unzip是不能解压超过2G文件的,现在看来,不仅是压缩包超过2G不行,压缩包内文件超过2G也是不行的。要解压,需要其它工具。据说这是由于C库中long类型数据所能表示的文件偏移在32位机子上只能有2G,可我的机子是64位的。这个理由是不是在描述有什么问题或者我理解的有偏差,这个并不重要,重要的是怎么解压大文件,方法之一是使用软件7zip。

下载7zip软件,下载地址是:http://sourceforge.net/projects/p7zip/files/

把这个文件直接下载到服务器上,或者先下载到本地电脑,再上传到Linux服务器上。

点击上面网址,登录网站,点击p7zip,选择版本点击下载(我选择最新版本16.02),注意不要下载源程序:

点击下载,下载后的文件是:p7zip_16.02_x86_linux_bin.tar.bz2

将这个文件夹上传到Linux服务器上。用bzip2解压该文件,再用tar解包:
bzip2 -d p7zip_16.02_x86_linux_bin.tar.bz2
tar -xvf  p7zip_16.02_x86_linux_bin.tar

进入文件夹p7zip_16.02,安装脚本加执行权限,执行 ./install.sh


执行7za可以看到帮助提示,安装成功。

接着就可以使用 7za命令解压.zip文件了。
如:  7za x 20190930*.zip

最后,修改脚本,将unzip换成7za x就可以了,如下图:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章