将一个巨大的tar文件的子集写入新的tar文件,而不先解压缩

时间:2012-03-12 09:00:47

标签: subset archive tar

我有一个巨大的gzipped tar存档文件huge.tar.gz,我想要从中提取一个子集并将其放入一个新的gzipped tar文件存档subset.tar.gz中,而不首先提取所有大文件。例如,如果列出huge.tar.gz的内容:

    tar tfz huge.tar.gz
    dir1/bla/bla.bla
    dir2/bla/bla.bla
    dir3/bla/bla.bla

,如何创建仅包含dir1:

的新tar存档文件subset.tar.gz
    tar tfz subset.tar.gz
    dir1/bla/bla.bla

2 个答案:

答案 0 :(得分:2)

这是一个两步过程。首先,您需要从tarball中提取目录:

tar -zxf huge.tar.gz dir1

然后你需要压缩它:

tar -zcf subset.tar.gz dir1

答案 1 :(得分:0)

我发现这件事的唯一方法就是从存档中删除你不想要的所有内容(如果你使用的是支持--delete的tar版本),你可以执行以下操作。

gzip -d < huge.tar.gz |tar --delete bla2 bla3 |gzip >part_huge.tar.gz