当您有很多相关文件时,有时将它们视为单个对象比 3 个、20 个或 100 个唯一文件更容易。 例如,当您发送一个文件而不是发送 30 个单独的文件所需的鼠标操作时,点击次数会更少。 几十年前,当程序员发明了一种创建归档的方法时,这个问题就解决了,因此 tar
命令诞生了(这个名字代表磁带归档,因为那时文件被保存到磁带上。) 今天,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 归档文件,也可以只是任何常规文件,例如日志文件。 为了使 gzipped 文件尽可能小,我使用 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
非常棒,但不要忘记 tar -j
用于 bzip2 文件,甚至 tar -J
用于高度压缩的 xz 文件。
如果您正在处理 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 条评论