可能的重复: gzip一组目录并创建一个tar压缩文件
这篇文章描述了如何在一个目录结构中单独地gzip每个文件。然而,我需要做一些稍微不同的事情。我需要为某个目录下的所有文件生成一个大的gzip文件。我还需要能够为压缩文件指定输出文件名(例如,files.gz),并覆盖旧的压缩文件文件(如果已经存在的话)。
可能的重复: gzip一组目录并创建一个tar压缩文件
这篇文章描述了如何在一个目录结构中单独地gzip每个文件。然而,我需要做一些稍微不同的事情。我需要为某个目录下的所有文件生成一个大的gzip文件。我还需要能够为压缩文件指定输出文件名(例如,files.gz),并覆盖旧的压缩文件文件(如果已经存在的话)。
tar -zcvf compressFileName.tar.gz folderToCompress
folderToCompress中的所有内容都将转到compressFileName
编辑:在回顾和评论之后,我意识到人们可能会混淆没有扩展名的compressFileName。如果你愿意,你可以使用.tar.gz扩展名(建议)和compressFileName
@amitchhajer的帖子为GNU tar工作。如果有人发现这篇文章并需要它在一个非GNU系统上工作,他们可以这样做:
tar cvf - folderToCompress | gzip > compressFileName
要展开存档:
zcat compressFileName | tar xvf -
有很多压缩方法可以递归地在命令行中工作,最好知道最终的用户是谁。
例如,如果要发送给运行Windows的人,那么zip可能是最好的:
zip -r file.zip folder_to_zip
unzip filenname.zip
对于其他Linux用户或你自己来说,tar是很棒的
tar -cvzf filename.tar.gz folder
tar -cvjf filename.tar.bz2 folder # even more compression
#change the -c to -x to above to extract
人们必须小心焦油和东西是如何被焦油化/提取的,例如如果我运行
cd ~
tar -cvzf passwd.tar.gz /etc/passwd
tar: Removing leading `/' from member names
/etc/passwd
pwd
/ home / myusername
tar -xvzf passwd.tar.gz
这将创建 /home/myusername/etc/passwd
不确定是否所有版本的tar都这样做:
Removing leading `/' from member names