如何归档Linux中的文件和目录

时间:2020-03-21 11:44:07  来源:igfitidea点击:

zip应用程序都是一个归档器和压缩实用程序,因此我们可以将其用于归档,压缩和解压缩文件和解压缩文件和目录在UNIX的操作系统中。
此zip应用程序兼容Windows和其他操作系统ZIP应用程序。
然而,GZIP和BZIP2是主要的压缩应用。
如何使用ZIP程序归档Linux中的文件和目录。

使用zip程序归档文件和目录使用zip程序

ZIP程序预先安装了一些Linux发行版。
如果不可用,则可以使用分发的默认包管理器安装它。

关于Arch Linux和Variants:

$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%)

其中我们是从File1,File2和File3创建一个名为file.zip的存档。
我们不必在文件名结束时使用.zip扩展名。
我为了清楚起见而添加了它。

同样,要创建一个目录的存档,请运行:

$zip directory.zip theitroad/
 adding: theitroad/(stored 0%)

其中我已创建了一个名为named annirad文件夹的名为diagrage.zip。
请注意,这仅将父目录(即)添加到存档。
要递归归档所有子目录,请使用如下面的-R标志。

$zip -r directory.zip theitroad/
 adding: theitroad/(stored 0%)
 adding: theitroad/file.txt (deflated 67%)
 adding: theitroad/audio.mp3 (deflated 6%)
 adding: theitroad/image.jpg (deflated 3%)

与Tar实用程序不同,ZIP程序会创建存档并在可能的情况下压缩。
但是tar是一个归档者,而不是压缩工具。

一次创建多个目录和/或者文件的存档

有时,我们可能需要从一组文件和文件夹创建存档。
为此,运行:

$zip -r directory.zip theitroad/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%)

上面的命令创建一个名为Directory.zip的归档命名目录,以及文件组,即file2,file2,file3.

现在让我告诉你另一个例子。

$zip directory.zip file4
 adding: file4 (stored 0%)

你注意到了吗?
我已经指定了现有存档,但ZIP程序更新了现有存档文件的内容而不替换它们。
因此,如果我们指定了现有存档,则会更新而不是替换。
要简单地说出,保留现有存档,添加了新的File4.
这是ZIP程序在tar实用程序上的显着优势。

提取档案

提取归档与创建档案一样简单。
要提取存档,只需执行以下操作:

$unzip directory.zip

示例输出将是:

Archive: directory.zip
 creating: theitroad/
 inflating: theitroad/file.txt 
 inflating: theitroad/audio.mp3 
 inflating: theitroad/image.jpg 
 extracting: file1 
 extracting: file2 
 extracting: file3 
 extracting: file4

我们还可以从目录中选择性地提取特定文件或者文件夹。
例如,以下命令从归档目录中提取File4.zip。

$unzip directory.zip file4
 Archive: directory.zip
 extracting: file4

列出存档的内容而不提取它

要列出存档的内容而不实际提取它,请使用-l标志。

$unzip -l directory.zip
 Archive: directory.zip
 Length Date Time Name
--------- ---------- ----- ---
 0 2016-03-29 15:55 theitroad/
 1286 2016-01-11 12:16 theitroad/file.txt
 8073033 2016-03-29 14:03 theitroad/audio.mp3
 15240 2016-03-29 14:45 theitroad/image.jpg
 5 2016-03-29 15:58 file1
 5 2016-03-29 15:58 file2
 5 2016-03-29 15:58 file3
 5 2016-03-29 16:37 file4
--------- ------
 8089579 8 files

当我们想要查找并提取特定文件而不是提取整个存档时,这可能很有用。

创建加密存档

zip命令的另一个值得注意的功能是它允许我们创建加密存档,因此用户需要输入密码,以便提取或者查看存档的内容。

要创建加密存档,请使用-e标志。

$zip -e -r directory.zip theitroad/file1 file2 file3 file4
Enter password: 
Verify password: 
 adding: theitroad/(stored 0%)
 adding: theitroad/file.txt (deflated 67%)
 adding: theitroad/audio.mp3 (deflated 6%)
 adding: theitroad/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] theitroad/file.txt password:

创建一个多部分存档

有时,我们可能需要通过Internet分享存档文件,并且该存档文件本身可能太大而无法通过Internet或者LAN发送。
在这种情况下,我们可以创建多个小型小型档案并通过互联网发送它们。

要将目录归档到多个较小的部分,例如每次3 MB,我们这样做:

$zip -r -s 3m archive.zip theitroad/

此命令将创建大小3MB的存档文件,如archive.z01,archive.z02,archive.z03 ....和归档。
我们需要将这些文件发送到收件人。
提取这些存档文件时,所有内容都将在名为OniToad的单个文件夹中提取。

要在GB中拆分存档,请使用以下"g":

$zip -r -s 3g archive.zip theitroad/

创建其他程序的档案

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是指管道。

用压缩率压缩档案

归档目录及其具有最高级别的目录及其内容的压缩:

$zip -r -9 archive.zip theitroad/

ZIP支持下面给出的三个压缩水平。

  • 1 - 最快(最差)
  • 9 - 最慢(最佳或者最高)
  • 6 - 默认级别

在创建档案时排除文件或者文件夹

我们可以在创建存档时排除不需要的文件或者子目录。
要执行此操作,请使用下面的-X标志:

$zip -r directory.zip theitroad/-x theitroad/image.jpg

上面的命令将创建一个存档的onITOad目录,但从存档中排除image.jpg文件。

我们可以使用以下命令验证内容而无需提取存档文件。

$unzip -l directory.zip

从现有存档中删除文件

我们可能会忘记在创建档案时排除一些不需要的东西。
不用担心!即使创建存档后,我们也可以删除这些文件。

要从现有存档中删除不需要的文件,请使用-d标志,如下所示。

$zip -d directory.zip "theitroad/file.txt"
deleting: theitroad/file.txt

类似地,删除相同类型的文件组,例如.txt filesuse:

$zip -d directory.zip "theitroad/*.txt"