在之前的指南中,我们学习了如何 使用 tar 命令归档文件和目录 在 Linux 中。 现在我们要做同样的事情,但是使用 压缩 一个 解压 程式。 zip 应用程序既是归档程序又是压缩实用程序,因此我们可以使用它来归档、压缩和解压缩 Linux 和类 Unix 操作系统中的文件和目录。 此 zip 应用程序与 Windows 和其他 OS zip 应用程序兼容。 然而, gzip 和 bzip2 是主要的压缩应用。 现在让我们看看如何在 Linux 中使用归档文件和目录 压缩 程序。
在 Linux 中使用 Zip 程序归档文件和目录
Zip 程序预装了一些 Linux 发行版。 万一它不可用,您可以使用发行版的默认包管理器安装它。
在 Arch Linux 及其变体上:
$ sudo pacman -S zip unzip
在 RHEL、CentOS、 Fedora:
$ sudo yum install zip unzip
在 Debian、Ubuntu、Linux Mint 上:
$ sudo apt-get install zip unzip
在 SUSE/openSUSE 上:
$ sudo zypper install zip unzip
现在让我们看一些例子。
创建新档案
要将一组文件归档为一个,只需执行以下操作:
$ zip file.zip file1 file2 file3
示例输出为:
adding: file1 (stored 0%) adding: file2 (stored 0%) adding: file3 (stored 0%)
在这里,我们创建一个名为 文件.zip 从 文件 1, 文件2 和 文件 3. 您不必使用 。压缩 文件名末尾的扩展名。 为了清楚起见,我添加了它。
同样,要创建 aa 目录的存档,请运行:
$ zip directory.zip ostechnix/ adding: ostechnix/ (stored 0%)
在这里,我创建了一个名为 目录.zip 的 ostechnix 文件夹。 请注意,这只会将父目录(即)添加到存档中。 要递归归档所有子目录,请使用 -r 像下面这样的标志。
$ zip -r directory.zip ostechnix/ adding: ostechnix/ (stored 0%) adding: ostechnix/file.txt (deflated 67%) adding: ostechnix/audio.mp3 (deflated 6%) adding: ostechnix/image.jpg (deflated 3%)
与 tar 实用程序不同,zip 程序创建存档并在可能的情况下对其进行压缩。 但是 tar 是一个归档器,而不是一个压缩工具。
一次创建多个目录和/或文件的存档
有时,您可能需要从一组文件和文件夹创建存档。 为此,请运行:
$ zip -r directory.zip ostechnix/ file1 file2 file3 adding: example/ (stored 0%) adding: example/Stephen.jpg (deflated 3%) adding: file1 (stored 0%) adding: file2 (stored 0%) adding: file3 (stored 0%)
上面的命令创建一个名为 目录.zip 从 ostechnix 目录和文件组,即 文件2, 文件2, 文件 3.
现在让我给你看另一个 example.
$ zip directory.zip file4 adding: file4 (stored 0%)
你注意到了吗? 我已经指定了现有存档,但 zip 程序更新了现有存档文件的内容而不替换它们。 因此,如果您指定了现有存档,它将被更新而不是被替换。 简而言之,保留现有存档,添加新文件4。 这是 zip 程序相对于 tar 实用程序的显着优势。
提取档案
提取档案就像创建档案一样简单。 要提取档案,只需执行以下操作:
$ unzip directory.zip
示例输出为:
Archive: directory.zip creating: ostechnix/ inflating: ostechnix/file.txt inflating: ostechnix/audio.mp3 inflating: ostechnix/image.jpg extracting: file1 extracting: file2 extracting: file3 extracting: file4
您还可以有选择地从目录中提取特定文件或文件夹。 为了 example,下面的命令提取 文件4 从档案 目录.zip.
$ unzip directory.zip file4 Archive: directory.zip extracting: file4
列出档案的内容而不提取它
要列出存档的内容而不实际提取它,请使用 -l 旗帜。
$ unzip -l directory.zip Archive: directory.zip Length Date Time Name --------- ---------- ----- ---- 0 2018-03-29 15:55 ostechnix/ 1286 2018-01-11 12:16 ostechnix/file.txt 8073033 2018-03-29 14:03 ostechnix/audio.mp3 15240 2018-03-29 14:45 ostechnix/image.jpg 5 2018-03-29 15:58 file1 5 2018-03-29 15:58 file2 5 2018-03-29 15:58 file3 5 2018-03-29 16:37 file4 --------- ------- 8089579 8 files
当您想要查找和提取特定文件而不是提取整个存档时,这可能很有用。
创建加密存档
zip 命令的另一个显着特点是它允许我们创建加密存档,因此用户需要输入密码才能提取或查看存档的内容。
要创建加密存档,请使用 -e 旗帜。
$ zip -e -r directory.zip ostechnix/ file1 file2 file3 file4 Enter password: Verify password: adding: ostechnix/ (stored 0%) adding: ostechnix/file.txt (deflated 67%) adding: ostechnix/audio.mp3 (deflated 6%) adding: ostechnix/image.jpg (deflated 3%) adding: file1 (stored 0%) adding: file2 (stored 0%) adding: file3 (stored 0%) adding: file4 (stored 0%
提取或查看存档内容时,需要输入正确的密码。
$ unzip directory.zip Archive: directory.zip [directory.zip] ostechnix/file.txt password:
创建多部分存档
有时,您可能需要通过 Internet 共享存档文件,而该存档文件本身可能太大而无法通过 Internet 或 LAN 发送。 在这种情况下,我们可以创建多标准小型档案并通过 Internet 发送。
要将目录归档为多个较小的部分,对于 example 3 MB 每个,我们做:
$ zip -r -s 3m archive.zip ostechnix/
此命令将创建大小为 3MB 的存档文件,例如 存档.z01, 存档.z02, 存档.z03 …. 和 存档.zip. 您需要将这些文件发送给收件人。 提取这些存档文件时,所有内容都将提取到一个名为 ostechnix.
要以 GB 为单位拆分存档,请使用“g”,如下所示:
$ zip -r -s 3g archive.zip ostechnix/
创建其他程序的档案
Zip 可以接受标准输入,因此可以创建其他程序的存档。 以下命令通过管道将“ls”命令的输出作为 zip 命令的输入。
$ ls -l Documents/ | zip ls-documents.zip - adding: - (deflated 56%)
记住这里 ls-documents.zip 是“ls”命令的存档。 因此,它不会使用显示存档的内容 -l 转变。
相反,您可以使用以下命令查看其内容:
$ unzip -p ls-documents.zip | less
这里, -p 指管子。
以压缩率压缩档案
以最高级别归档目录及其内容 [9] 压缩:
$ zip -r -9 archive.zip ostechnix/
Zip 支持三种压缩级别,如下所示。
- 1 – 最快(最差)
- 9 – 最慢(最佳或最高)
- 6 – 默认的水平
创建档案时排除文件或文件夹
我们可以在创建存档时排除不需要的文件或子目录。 为此,请使用 -X 标志如下:
$ zip -r directory.zip ostechnix/ -x ostechnix/image.jpg
上述命令将创建 ostechnix 目录的存档,但排除 图像.jpg 档案中的文件。
您可以使用以下命令在不提取存档文件的情况下验证内容。
$ unzip -l directory.zip
从现有存档中删除文件
您可能在创建档案时忘记排除一些不需要的东西。 不用担心! 即使在创建存档后,您也可以删除这些文件。
要从现有存档中删除不需要的文件,请使用 -d 标志如下图。
$ zip -d directory.zip "ostechnix/file.txt" deleting: ostechnix/file.txt
同样,要删除一组相同类型的文件,对于 example 。文本文件 文件使用:
$ zip -d directory.zip "ostechnix/*.txt"
而且,这就是现在的全部。 我们只触及了 zip/unzip 命令的皮毛。 您可以使用这些程序做更多事情。 有关更多详细信息,请参阅手册页。
$ man zip
$ man unzip