2012-09-08 131 views
150

可能重复:
gzipping up a set of directories and creating a tar compressed file如何gzip压缩所有文件中的所有子目录成一个压缩文件中的bash

This post介绍如何在目录结构中的单独gzip压缩每个文件。但是,我需要做一些稍微不同的事情。我需要为某个目录下的所有文件生成一个大的gzip文件。我还需要能够指定压缩文件的输出文件名(例如files.gz),并覆盖旧压缩文件文件(如果已存在)。

+0

'就其本质gzip'只压缩单文件。要将多个文件放入一个文件中供后续gzipping使用,请使用'tar'。 – Thomas

回答

310
tar -zcvf compressFileName.tar.gz folderToCompress 

一切folderToCompress会去compressFileName

编辑:审查并提出意见后,我意识到,人们可能会感到困惑与compressFileName没有扩展名。如果你想要的话,你可以使用压缩文件名.tar.gz扩展名(建议)

+1

谢谢。这会压缩“folderToCompress”下的所有内容(即递归)吗? – Doug

+1

folderToCompress中的所有内容都将压缩文件名 – amitchhajer

+73

您可能想要选择'compressFileName',因此它包含'.tar.gz'扩展名,否则您会让其他人都疯狂。 – drewish

15

@amitchhajer的帖子适用于GNU tar。如果有人发现这篇文章,需要它到非GNU系统上工作,他们可以这样做:

tar cvf - folderToCompress | gzip > compressFileName 

要展开存档:

zcat compressFileName | tar xvf - 
+2

除了可移植性以外,如果您想将参数传递给gzip(例如--test或--best),此解决方案很有用,因为afaik甚至GNU tar没有提供将参数发送到gzip的方法。 –

+0

这是多功能的,因为您也可以使用其他压缩机。例如'pigz',因为它可以更好地利用cpu(一个zip的多线程实现),所以速度更快。 –

51

有很多的工作递归命令压缩方法并且很高兴知道谁是最终受众。

即如果要发送给某人运行Windows,然后压缩很可能是最好的:

zip -r file.zip folder_to_zip 

unzip filenname.zip 

对其他Linux用户或你的自我焦油是伟大

tar -cvzf filename.tar.gz folder 

tar -cvjf filename.tar.bz2 folder # even more compression 

#change the -c to -x to above to extract 

我们必须要小心与焦油和事情如何tarred /提取,例如如果我跑

cd ~ 
tar -cvzf passwd.tar.gz /etc/passwd 
tar: Removing leading `/' from member names 
/etc/passwd 


pwd 

/home /名为myUsername

tar -xvzf passwd.tar.gz 

这将创造 /家庭/名为myUsername/etc/passwd文件

不确定的,如果焦油的所有版本中做到这一点:

Removing leading `/' from member names 
+4

针对linux-> windows的+1 –

相关问题