如何将所有子目录中的所有文件gzip压缩成bash中的一个压缩文件

可能重复:
gzipping一组目录并创build一个tar压缩文件

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

 tar -zcvf compressFileName.tar.gz folderToCompress 

folderToCompress中的所有内容都将转到compressFileName

编辑:审查和意见后,我意识到,人们可能会与compressFileName混淆没有扩展名。 如果你想要的话,你可以使用.tar.gz扩展名(如build议)和compressFileName

有很多压缩方法可以使用recursion命令行,并且很好地知道谁是最终用户。

即如果它被发送给运行Windows的人,那么zip可能是最好的:

 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 

/家/名为myUsername

 tar -xvzf passwd.tar.gz 

这将创build/ home / myusername / etc / passwd

不确定是否所有版本的焦油做到这一点:

  Removing leading `/' from member names 

@amitchhajer的post适用于GNU tar。 如果有人发现这个post,并需要它在非GNU系统上工作,他们可以这样做:

 tar cvf - folderToCompress | gzip > compressFileName 

要扩展存档:

 zcat compressFileName | tar xvf -