如何解压文件然后使用管道 tar ?

问题描述 投票:0回答:1

我有一个 tar 文件

original.tar
,我需要解压它,然后出于某种原因重新打包它。我不想将其解压缩到磁盘,然后从磁盘中解压缩。我希望我可以将文件解压缩到标准输出,然后从标准输入压缩文件,我尝试了这个命令但失败了:

tar xf original.tar -O | tar cf out.tar -T -

但是我收到很多错误消息:

有什么方法可以正确地做到这一点吗?

linux bash shell pipe tar
1个回答
0
投票

我不想将其解压缩到磁盘,然后从磁盘中解压缩。我希望我可以将文件解压缩到标准输出,然后从标准输入压缩文件[...]

有什么方法可以正确地做到这一点吗?

不,不使用标准

tar
实用程序。它不接受标准输入上的文件数据,因为它需要文件元数据以及权限、所有权、时间戳,可能还有更多。它从文件系统获取该信息。 GNU 的
tar
实现将接受要从其标准输入归档的文件的 names,作为在命令行上获取它们的替代方法,但它不会以这种方式接受内容。

你可以想象编写一个程序来做到这一点,也许使用像libtar这样的东西,尽管我注意到那个特定的项目似乎被放弃了。

© www.soinside.com 2019 - 2024. All rights reserved.