你是如何使用tar命令的?这是我最近问我们社区的作家的问题。
当你有很多相关的文件时,有时把它们当作一个单一的对象,而不是3个或20个或100个独特的文件,会比较容易。例如,当你用电子邮件发送一个文件时,与用电子邮件发送30个独立文件所需的鼠标操作相比,涉及的点击次数更少。这个难题在几十年前得到了解决,当时程序员们发明了一种创建存档的方法,于是tar 命令就诞生了(这个名字代表磁带存档,因为在当时,文件被保存在磁带上。)今天,tar 仍然是一种将文件捆绑在一起的有用方法,不管是为了压缩它们以减少驱动器上的空间,还是为了更容易地处理大量的文件,或者为了方便而将文件逻辑地组合在一起。
我问Opensource.com的作者,他们在日常工作中如何使用tar ,以及相关的工具,如zip 和gzip 。以下是他们的说法。
备份和日志
每当我需要对整个目录树进行备份或存档时,我都会使用tar 和zip 。例如,向客户交付一组文件,或者只是在我对网站进行重大改动之前对我的网站根目录进行快速备份。如果我需要与其他人分享,我就用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 目录创建一个压缩的备份。
我也有创建日志文件的网络应用。为了使它们不占用太多空间,我使用gzip 来压缩它们。gzip 命令是一个压缩单个文件的好方法。这可以是一个TAR归档文件,也可以是任何像日志文件这样的普通文件。为了使压缩后的文件尽可能的小,我用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
我在我的文章中介绍了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 -
我经常用它来压缩系统之间的数据,我们有带宽限制,需要一个低资源的选择。
方舟
我发现自己最近在使用KDE的应用程序Ark。这是一个GUI应用程序,但它与Dolphin文件管理器整合得非常好,以至于我已经养成了直接将文件更新到存档中的习惯,甚至懒得将整个文件解压。当然,你可以用tar 命令做同样的事情,但如果你在Dolphin里浏览文件,Ark让你快速简单地与档案互动,而不打断你当前的工作流程。

档案对我来说有点像一个被禁止的保险库。一旦我把文件放进档案室,它们就像被遗忘了一样,因为与档案室互动并不总是那么方便。但Ark可以让你在不解压的情况下预览文件(技术上它们正在被解压,但并不 "感觉 "它们在解压,因为这一切都发生在原地),从存档中删除一个文件,更新文件,重命名文件,以及更多。这是一种非常好的、动态的与档案互动的方式,这鼓励我更经常地使用它们。