Linux-是否有使用管道将.bz2文件转换为.tar.bz2文件的方法?

内含物

有没有一种方法可以将.bz2文件转换为.tar.bz2文件,而无需将整个文件解压缩到磁盘然后重新压缩?解压缩后的大小大于我的驱动器。由于bz2在块上运行,因此您似乎可以对块进行解压缩,通过管道传输,重新压缩,从内存中删除解压缩的块等。

在Ubuntu论坛上提出了这个问题,但没有找到答案。

庸医吉x德

更新:对不起,我的原始答案根本不起作用。tar不会接受来自STDIN的数据流作为输入,因此第一个命令失败。

我唯一想到的方法就是编写自己的程序,tar在数据流周围添加所需的标头等。然后,您可以编写:

$ bzcat foo.bz2 | stream-to-tar | bzip - > foo.tar.bz2

...并且(假设您的程序获得tar正确格式),您可以使用standard对其进行解压缩tar xf foo.tar.bz2


这可能不是您想要的方式,因为它没有提供首先压缩文件的任何通常的优势。

$ bzcat foo.bz2 | tar cjf foo.tar.bz2 -

现在,问题在于tar中不包含任何文件系统,这是因为我们给出的所有信息都是经过解压缩的数据流。这意味着您需要像这样解压缩/取消存储它:

$ tar --to-stdout -xjf foo.tar.bz2 > foo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章