Zip是使用最广泛的存档文件格式,它支持无损数据压缩。Zip文件是包含一个或多个文件或目录的数据压缩容器。

已压缩文件占用较少的磁盘空间可以比未压缩文件更快地从一台机器传输到另一台机器。

zip文件适用于所有操作系统,可以在Windows,macOS和Linux中解压缩Zip文件。

在本教程中,我们将向您展示如何在Linux使用zip命令指定压缩方法和级别和压缩文件和目录。

安装 zip

要检查您的系统上是否安装zip,请运行命令zip --version,命令将会打印zip的版本号。

如果您的系统上未安装unzip,终端将会提示你bash: command not found: zip。可以使用发行版的软件包管理器进行安装。

如果你的计算机运行的是基于Debian的Linux发行版,例如Ubuntu,Linux mint,可以运行sudo apt update && sudo apt install zip安装zip。

如果你的计算机运行的是基于Redhat的Linux发行版,例如Fedora,CentOS。可以运行sudo yum install zip安装zip。

sudo apt install zip
sudo yum install zip

zip 命令选项

zip命令语法形式是zip OPTIONS ARCHIVE_NAME FILESARCHIVE_NAME 是存档的名称,FILES可以是一个或者多个文件与目录。

要在指定的目录中创建Zip文件,用户需要对该目录具有写入权限,对要压缩的文件具读取权限。

ZIP文件不支持Linux权限信息,zip文件解压缩后的文件并不保留原始权限的信息,解压缩的文件归运行unzip命令的用户所有。

如果你需要保留文件权限信息,使用tar命令创建存档文件。

zip 命令压缩文件和目录

要使用zip命令压缩一个或多个文件,请在zip命令指定存档文件的名称,然后是指定要添加到zip存档的文件。文件使用空格分隔。

如果指定的名称省略扩展名.zip,zip命令将会自动添加扩展名到存档名称。例如命令zip archivename filename将创建一个与之相同名称的存档archivename.zip

通常,你都是压缩目录及其子目录的所有文件,但zip命令并不会递归压缩所有文件与目录,如果需要递归压缩文件与目录,请使用unzip命令的-r选项。

默认情况下,zip命令打印添加到存档的文件名称和压缩方法。要禁止zip命令打印这些信息,可以使用zip命令的-q选项。

zip archivename.zip filename1 filename2 filename3
zip -q archivename.zip filename1 filename2 filename3
zip -r archivename.zip directory_name
adding: filename1 (deflated 63%)
adding: filename2 (stored 0%)
adding: filename3 (deflated 38%)

zip 命令压缩方法和级别

Zip的默认压缩方法是deflate。如果zip命令确定无法压缩文件,zip命令则使用store方法将文件添加到zip存档文件,并且不对文件进行压缩。

在大多数Linux发行版中,zip命令还支持bzip2压缩方法。要指定压缩方法,请使用zip命令的-Z选项。

zip命令允许您使用前缀-和0到9的数字指定压缩级别。默认压缩级别为-6。在指定的压缩级别为-0,所有文件都不会被压缩,而仅仅是添加到存档文件。

当压缩级别指定为-9时,将强制zip命令对所有文件使用最佳压缩。压缩级别越高,zip进程占用的CPU越多,并且需要更多时间才能完成。

zip -r -Z bzip2 archivename.zip directory_name
zip -9 -r archivename.zip directory_name
...
adding: sub_dir/ (stored 0%)
adding: sub_dir/file1 (bzipped 52%)
adding: sub_dir/file2 (bzipped 79%)

结论

在Linux,您可以使用zip命令创建Zip存档。要在Linux解压ZIP存档,可以使用unzip命令。如果您想了解Zip的更多信息,请访问Zip Man页面。