当您有大量相关文件时,有时将它们视为单个对象比 3 个、20 个或 100 个独立文件更容易。例如,当您发送一个文件时,与发送 30 个单独文件所需的操作相比,点击次数更少。几十年前,当程序员发明了一种创建归档的方法时,这个问题就得到了解决,因此 tar
命令诞生了(这个名字代表 tape archive,因为那时文件被保存到磁带上。)今天,tar
仍然是将文件捆绑在一起的有用方法,无论是压缩它们以减少它们在驱动器上占用的空间,还是为了更轻松地处理大量文件,还是为了方便地将文件逻辑地分组在一起。
我询问了 Opensource.com 的作者他们在日常工作中如何使用 tar
以及 zip
和 gzip
等相关工具。以下是他们的说法。
备份和日志
每当我需要备份或归档整个目录树时,我都会使用 tar
和 zip
。例如,向客户交付一组文件,或者只是在对网站进行重大更改之前快速备份我的 web 根目录。如果我需要与他人共享,我会使用 zip -9r
创建一个 ZIP 归档文件,其中 -9
使用最佳压缩,-r
将递归到子目录中。例如,zip -9r client-delivery.zip client-dir
创建一个包含我工作的 zip 文件,我可以将其发送给客户。
如果备份只是为了我自己,我可能会使用 tar
代替。当我使用 tar
时,我通常使用 gzip
进行压缩,我使用 tar czf
在一个命令行上完成所有操作,其中 c
将创建一个新的归档文件,z
使用 gzip
压缩它,f
设置归档文件名。例如,tar czf web-backup.tar.gz html
创建我的 html
目录的压缩备份。
我还有创建日志文件的 Web 应用程序。为了防止它们占用太多空间,我使用 gzip
压缩它们。gzip
命令是压缩单个文件的好方法。这可以是 TAR 归档文件,或者只是任何常规文件,例如日志文件。为了使 gzip 文件尽可能小,我使用 gzip -9
压缩文件,其中 -9
使用最佳压缩。
使用 gzip
压缩文件的优点是,我可以稍后使用 zcat
和 zless
等命令查看它们,而无需在磁盘上解压缩它们。因此,如果我想查看昨天的日志文件,我可以使用 zless yesterday.log.gz
,zless
命令会自动使用 gunzip
解压缩数据并将其发送到 less
查看器。最近,我想查看我每天有多少日志条目,我使用 zcat
命令运行了该命令,如下所示
for f in *.log.gz; do echo -n "$f,"; zcat $f | wc -l; done
这会生成一个逗号分隔的日志文件列表和行数,我可以轻松地将其导入到电子表格中进行分析。
Zcat
我在我的文章 cat 命令入门 中介绍了 zcat
命令。也许这可以作为进一步讨论“就地”压缩数据分析的刺激。
Zless 和 lzop
我喜欢使用 zless
浏览日志文件和归档文件。它确实有助于降低留下我尚未清理的随机旧日志文件的风险。
在处理压缩归档文件时,tar -zxf
和 tar -zcf
非常棒,但不要忘记对那些 bzip2 文件使用 tar -j
,甚至对高度压缩的 xz 文件使用 tar -J
。
如果您正在处理 CPU 资源有限的平台,您甚至可以考虑像 lzop
这样的低开销解决方案。例如,在源计算机上
tar --lzop -cf - source_directory | nc destination-host 9999
在目标计算机上
nc -l 9999 | tar --lzop -xf -
我经常使用它来压缩系统之间的数据,在这些系统中我们有带宽限制,并且需要低资源选项。
Ark
我发现自己最近一直在使用 KDE 应用程序 Ark。它是一个 GUI 应用程序,但它与 Dolphin 文件管理器集成得非常好,以至于我养成了直接将文件更新到归档文件的习惯,甚至懒得解压缩整个文件。当然,您可以使用 tar
命令做同样的事情,但如果您无论如何都在 Dolphin 中浏览文件,Ark 可以让您快速轻松地与归档文件交互,而不会中断您当前的工作流程。

(Seth Kenlon, CC BY-SA 4.0)
归档文件曾经给我的感觉有点像一个禁忌的保险库。一旦我将文件放入归档文件中,它们就如同被遗忘了一样,因为它并不总是方便与归档文件交互。但是 Ark 允许您在不解压缩文件的情况下预览文件(从技术上讲,它们正在被解压缩,但它“感觉”不像它们正在被解压缩,因为这一切都就地发生),从归档文件中删除文件,更新文件,重命名文件等等。这是一种非常好的动态方式来与归档文件交互,这鼓励我更频繁地使用它们。
6 条评论