error [XXX.zip]: start of central directory not found; zipfile corrup

unzip无法解压缩大于4G的文件

从Windows平台通过FTP上传一个大小约为11G的zip文件到Linux系统(CentOS Linux release 7.9.2009)上,使用unzip解压过程中出现如下错误:

Archive:  insightone.zip
warning [insightone.zip]:  7093235758 extra bytes at beginning or within zipfile
  (attempting to process anyway)
error [insightone.zip]:  start of central directory not found;
  zipfile corrupt.
  (please check that you have transferred or created the zipfile in the
  appropriate BINARY mode and that you have compiled UnZip properly)

从网上搜索了一下相关资料,发现是当前的unzip版本不支持4G以上的压缩包。要么升级到最新版本的unzip,要么使用7-Zip forLinux版本的的p7zip。

[root@master ~]# unzip -v
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

7zip是一个开源的压缩软件,非常小巧,提供的功能和WinRAR差不多,但支持的格式几乎比后者多一倍。7z完全开源,包括压缩算法,而且还可以方便地使用它提供的库,在自己的程序中集成压缩功能。它使用 7z 这种新的压缩格式,并支持高压缩比。因此它被认为是比先前提及的压缩工具更好的软件。在 Linux 下可以通过 p7zip 软件包得到,该软件包里包含 3 个二进制文件:7z/7za/7zr

安装7ZIP

7-zip以高压缩率著称,并且是一款免费开源的压缩软件。在常规的Linux发行版中,无法通过简单的yum命令来安装该软件。那么在CentOS中,如何安装7ZIP呢?
有以下3种方法:

第一种,源码编译安装

官网下载地址:
开源文件项目地址:http://sourceforge.net/projects/p7zip/,目前最新版为9.20.1。
执行以下命令下载安装:

wget http://nchc.dl.sourceforge.net/project/p7zip/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2
tar -jxvf p7zip_9.20.1_src_all.tar.bz2
cd p7zip_9.20.1
make
make install

# 最后一步make install后出现以下信息,即为安装完毕。
./install.sh /usr/local/bin /usr/local/lib/p7zip /usr/local/man /usr/local/share/doc/p7zip
- installing /usr/local/bin/7za
- installing /usr/local/man/man1/7z.1
- installing /usr/local/man/man1/7za.1
- installing /usr/local/man/man1/7zr.1
- installing /usr/local/share/doc/p7zip/README
- installing /usr/local/share/doc/p7zip/ChangeLog
- installing HTML help in /usr/local/share/doc/p7zip/DOCS

第二种,rpm安装

下载地址:http://pkgs.repoforge.org/p7zip/,请以最新版为准。
在 CentOS 5.x 32位下安装7ZIP

wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el5.rf.i386.rpm
rpm -ivh p7zip-9.20.1-1.el5.rf.i386.rpm

在 CentOS 5.x 64位下安装7ZIP

wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el5.rf.x86_64.rpm
rpm -ivh p7zip-9.20.1-1.el5.rf.x86_64.rpm

在 CentOS 6.x 32位下安装7ZIP

wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el6.rf.i686.rpm
rpm -ivh p7zip-9.20.1-1.el6.rf.i686.rpm

在 CentOS 6.x 64位下安装7ZIP

wget http://pkgs.repoforge.org/p7zip/p7zip-9.20.1-1.el6.rf.x86_64.rpm
rpm -ivh p7zip-9.20.1-1.el6.rf.x86_64.rpm

第三种,yum安装

命令如下:

yum install -y p7zip

使用7zip的命令是7za。
安装完成后的使用方法:
命令格式:7za {a|d|l|e|u|x} 压缩包文件名 {文件列表或目录可选}

a  向压缩包里添加文件或创建压缩包。如向001.7z添加001.jpg,执行:7za a 001.7z 001.jpg;将001目录打包执行:7za a 001.7z 001;
d  从压缩里删除文件。			  如将001.7z里的001.jpg删除,执行:7za d 001.7z 001.jpg
l  列出压缩包里的文件。		  如列出001.7z里的文件,执行:7za l 001.7z
e  解压到当前目录,目录结构会被破坏。		如001.rar内有如下目录及文件123/456/789.html,执行:7za e 001.rar,目录123和456及文件789.html都会存放在当前目录下。
x  以完整路径解压。

zip文件解压中文文件乱码问题,由于zip文件中没有声明其编码,所以在Linux上使用unzip解压以默认编码解压,中文文件名会出现乱码。
在这里插入图片描述
The future can only be determined by will and hard work.

猜你喜欢

转载自blog.csdn.net/qq_50573146/article/details/125707245
今日推荐