有没有办法将 .bz2 文件转换为 .tar.bz2 文件而无需将整个文件解压缩到磁盘然后重新压缩?解压后的大小比我的驱动器大。由于 bz2 对块进行操作,因此您似乎可以解压缩一个块,对其进行管道传输,重新压缩它,从内存中删除解压缩的块等。
我在 Ubuntu 论坛上问过这个问题,但没有找到答案。
更新:我原来的答案根本不起作用,抱歉。 tar不会接受来自 STDIN 的数据流作为输入,因此第一个命令失败。
我能想到的完成您想要的任务的唯一方法是编写自己的程序来tar在数据流周围添加所需的标头等。然后你可以写:
$ bzcat foo.bz2 | stream-to-tar | bzip - > foo.tar.bz2
Run Code Online (Sandbox Code Playgroud)
...并且(假设您的程序格式tar正确)您可以使用标准tar xf foo.tar.bz2.
这可能不是您想要的方式,因为它首先不提供压缩文件的任何常见优点。
$ bzcat foo.bz2 | tar cjf foo.tar.bz2 -
Run Code Online (Sandbox Code Playgroud)
现在的问题是 tar 中不包含任何文件系统,因为我们给它的只是解压缩的数据流。这意味着您需要像这样解压缩/解压它:
$ tar --to-stdout -xjf foo.tar.bz2 > foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1597 次 |
| 最近记录: |