2012-03-12 71 views
3

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

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

这是一个两步的过程。首先,你需要从压缩包解压目录:

tar -zxf huge.tar.gz dir1 

然后你需要对其进行压缩:

tar -zcf subset.tar.gz dir1 
+0

谢谢你,很简单! – user1069609 2012-03-12 09:19:37

+0

不客气。 – 2012-03-12 09:21:25

0

我发现donig这一点的唯一方法是删除你不”一切牛逼从存档(前提是你使用的是版本的tar支持--delete),你可以做到以下几点希望。

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