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 FILES
。ARCHIVE_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%)
zip 命令设置密码
如果您的zip文件包含敏感信息,可以使用zip命令的-e
选项对其进行加密。系统将提示您输入密码。
zip -e archivename.zip directory_name
Enter password:
Verify password:
创建多个zip文件
想象一下,您希望将Zip存档存储在文件托管服务上,文件上传大小限制为1GB,但你的Zip文件为5GB。
此时,您可以使用-s
选项后跟指定的文件大小创建多个Zip文件。单位可以是k
千字节,m
兆字节,g
千兆字节或t
万兆字节。
例如命令zip -s 1g -r archivename.zip directory_name
将会在zip文件达到1GB后,创建新的zip文件继续压缩。
zip -s 1g -r archivename.zip directory_name
archivename.zip
archivename.z01
archivename.z02
archivename.z03
archivename.z04
zip 命令隐藏文件
zip命令允许你使用*
通配符添加文件到zip存档文件,但有一点值的注意的在使用通配符时并不会包含隐藏文件。
如果你需要添加文件和隐藏文件,请使用通配符匹配隐藏文件,例如命令zip archivename .* *
。
.*
表示匹配隐藏文件,*
是普通文件。命令将会创建archivename.zip存档文件。
zip archivename .* *
结论
在Linux,您可以使用zip
命令创建Zip存档。要在Linux解压缩ZIP存档,可以使用unzip命令。如果您想了解Zip的更多信息,请访问Zip Man页面。