0

我有一个只使用未压缩文件的程序。我有几个 .gz 文件,我的目标是将它们的串联提供给该程序。如果我有一个 tar.gz 文件,我可以使用 archivemont 命令挂载 tar.gz 存档。

我知道我可以连接 gz 文件:

cat a.gz b.gz > c.gz

但据我所知,没有办法挂载 gz 文件。我没有足够的磁盘空间来解压缩所有文件,并且 tar 命令不接受 stdin 作为输入,所以我不能这样做:

zcat *.gz | tar - | gzip > file.tar.gz
4

1 回答 1

0

目前尚不清楚您需要对 tar.gz 存档执行哪些操作。但据我所知,tar.gz 不是这个应用程序的格式。整个存档流由 gzip 压缩,因此您无法拉出或更改文件,而无需重新压缩之后的所有内容。可以专门准备 tar.gz 流以保持每个文件的压缩独立,但您也可以使用 .zip 格式,它更适合随机访问和操作存档中的单个文件。

为了解决您的评论之一, tar 实际上可以接受 stdin 作为输入。有关一些示例,请参见pipe tar extract into tar create,其中 GNU tar 和 BSD tar(具有不同的语法)都可以从 stdin 获取 tar 文件,删除条目,并将新的 tar 文件写入 stdout。

于 2012-12-15T15:36:23.103 回答