首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能用gzip,bzip,bzip2,xz压缩目录?

为什么不能用gzip,bzip,bzip2,xz压缩目录?
EN

Stack Overflow用户
提问于 2015-12-14 03:33:15
回答 2查看 422关注 0票数 0

有没有可能的方法来压缩一个目录与GZip,BZip,BZip2,xz格式。我正在构建一个命令行工具(使用bash),我需要包含这些选项。

EN

回答 2

Stack Overflow用户

发布于 2015-12-14 03:39:39

像这样的命令

代码语言:javascript
复制
tar czf output.tar.gz yourdir/

应该行得通。

  • c表示压缩文件将创建archive
  • z表示输出将被压缩(使用gzip)
  • 输出文件名将在压缩后结束,您可以指定任意数量的目录/文件(space-separated)
票数 1
EN

Stack Overflow用户

发布于 2015-12-14 05:23:25

回答你问题的“为什么”部分,这是因为Unix的哲学是有许多小工具可以很好地完成它们的工作,你可以把它们串在一起,而不是一个做不好任何事情并且很难改进的大工具。您的示例完美地说明了这一原理,其中有几个压缩工具可供选择,并且很容易向工具箱中添加一个新的压缩工具。归档部分,将文件目录转换为字节流,是一个不同的任务,它是自己的工具,可以与任何这些或任何未来的压缩工具相结合。

然后你的问题的主体会问“如何”。您可以将管道与tar、cpio或pax一起使用。焦油是最常见的。然后,您可以相应地命名该文件,以便文件的使用者可以从名称中辨别出它是什么。例如,以.tar.gz结尾。如下所示:

代码语言:javascript
复制
tar cf - somedirectory | gzip > somedirectory.tar.gz

代码语言:javascript
复制
tar cf - somedirectory | xz > somedirectory.tar.xz

这些文件将目录压缩成字节流,然后通过管道将其传送到压缩器。然后将压缩器的输出写入包含压缩目录内容的文件。

要解压缩,请执行以下操作:

代码语言:javascript
复制
gzip -dc somedirectory.tar.gz | tar xf -

在这里,它是以相反的顺序完成的,即首先解压缩文件,并将其输出提供给tar,以提取文件并重新创建目录结构。-表示将归档文件放入标准输出或从标准输入获取归档文件。

说了这么多关于拥有能够很好地完成工作的小工具是多么的好,这个tar的应用程序是如此的普遍,以至于它被内置到tar选项中。因此,您可以:

代码语言:javascript
复制
tar czf somedirectory.tar.gz somedirectory

tar cJf somedirectory.tar.xz somedirectory

tar将运行gzip或xz可执行文件,并通过管道将数据传递给它们。

(J是最近添加的gnutar,因此您的tar可能没有它。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34255378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档