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

时间:2012-09-08 14:32:35

标签: linux bash shell gzip

  

可能重复:
  gzipping up a set of directories and creating a tar compressed file

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

3 个答案:

答案 0 :(得分:362)

tar -zcvf compressFileName.tar.gz folderToCompress

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

编辑:经过审核和评论后,我意识到人们可能会在没有扩展名的情况下与compressFileName混淆。如果需要,可以使用.tar.gz扩展名(如建议的那样)和compressFileName

答案 1 :(得分:56)

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

即。如果它被发送给运行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

必须小心使用tar以及如何涂抹/提取内容,例如,如果我运行

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


pwd

/家庭/名为myUsername

tar -xvzf passwd.tar.gz

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

不确定所有版本的tar是否都这样做:

 Removing leading `/' from member names

答案 2 :(得分:16)

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

tar cvf - folderToCompress | gzip > compressFileName

要展开存档:

zcat compressFileName | tar xvf -