如何在 Linux 中归档文件和目录 [Part 2]

在之前的指南中,我们学习了如何 使用 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%)

在这里,我创建了一个名为 目录.zipostechnix 文件夹。 请注意,这只会将父目录(即)添加到存档中。 要递归归档所有子目录,请使用 -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%)

上面的命令创建一个名为 目录.zipostechnix 目录和文件组,即 文件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