有没有可能的方法来压缩一个目录与GZip,BZip,BZip2,xz格式。我正在构建一个命令行工具(使用bash),我需要包含这些选项。
发布于 2015-12-14 03:39:39
像这样的命令
tar czf output.tar.gz yourdir/应该行得通。
c表示压缩文件将创建archivez表示输出将被压缩(使用gzip)发布于 2015-12-14 05:23:25
回答你问题的“为什么”部分,这是因为Unix的哲学是有许多小工具可以很好地完成它们的工作,你可以把它们串在一起,而不是一个做不好任何事情并且很难改进的大工具。您的示例完美地说明了这一原理,其中有几个压缩工具可供选择,并且很容易向工具箱中添加一个新的压缩工具。归档部分,将文件目录转换为字节流,是一个不同的任务,它是自己的工具,可以与任何这些或任何未来的压缩工具相结合。
然后你的问题的主体会问“如何”。您可以将管道与tar、cpio或pax一起使用。焦油是最常见的。然后,您可以相应地命名该文件,以便文件的使用者可以从名称中辨别出它是什么。例如,以.tar.gz结尾。如下所示:
tar cf - somedirectory | gzip > somedirectory.tar.gz或
tar cf - somedirectory | xz > somedirectory.tar.xz这些文件将目录压缩成字节流,然后通过管道将其传送到压缩器。然后将压缩器的输出写入包含压缩目录内容的文件。
要解压缩,请执行以下操作:
gzip -dc somedirectory.tar.gz | tar xf -在这里,它是以相反的顺序完成的,即首先解压缩文件,并将其输出提供给tar,以提取文件并重新创建目录结构。-表示将归档文件放入标准输出或从标准输入获取归档文件。
说了这么多关于拥有能够很好地完成工作的小工具是多么的好,这个tar的应用程序是如此的普遍,以至于它被内置到tar选项中。因此,您可以:
tar czf somedirectory.tar.gz somedirectory
tar cJf somedirectory.tar.xz somedirectorytar将运行gzip或xz可执行文件,并通过管道将数据传递给它们。
(J是最近添加的gnutar,因此您的tar可能没有它。)
https://stackoverflow.com/questions/34255378
复制相似问题