我有一个 tar 文件
original.tar
,我需要解压它,然后出于某种原因重新打包它。我不想将其解压缩到磁盘,然后从磁盘中解压缩。我希望我可以将文件解压缩到标准输出,然后从标准输入压缩文件,我尝试了这个命令但失败了:
tar xf original.tar -O | tar cf out.tar -T -
有什么方法可以正确地做到这一点吗?
我不想将其解压缩到磁盘,然后从磁盘中解压缩。我希望我可以将文件解压缩到标准输出,然后从标准输入压缩文件[...]
有什么方法可以正确地做到这一点吗?
不,不使用标准
tar
实用程序。它不接受标准输入上的文件数据,因为它需要文件元数据以及权限、所有权、时间戳,可能还有更多。它从文件系统获取该信息。 GNU 的 tar
实现将接受要从其标准输入归档的文件的 names,作为在命令行上获取它们的替代方法,但它不会以这种方式接受内容。
你可以想象编写一个程序来做到这一点,也许使用像libtar这样的东西,尽管我注意到那个特定的项目似乎被放弃了。