可能重复:
gzipping up a set of directories and creating a tar compressed file如何gzip压缩所有文件中的所有子目录成一个压缩文件中的bash
This post介绍如何在目录结构中的单独gzip压缩每个文件。但是,我需要做一些稍微不同的事情。我需要为某个目录下的所有文件生成一个大的gzip文件。我还需要能够指定压缩文件的输出文件名(例如files.gz),并覆盖旧压缩文件文件(如果已存在)。
可能重复:
gzipping up a set of directories and creating a tar compressed file如何gzip压缩所有文件中的所有子目录成一个压缩文件中的bash
This post介绍如何在目录结构中的单独gzip压缩每个文件。但是,我需要做一些稍微不同的事情。我需要为某个目录下的所有文件生成一个大的gzip文件。我还需要能够指定压缩文件的输出文件名(例如files.gz),并覆盖旧压缩文件文件(如果已存在)。
tar -zcvf compressFileName.tar.gz folderToCompress
一切folderToCompress会去compressFileName
编辑:审查并提出意见后,我意识到,人们可能会感到困惑与compressFileName没有扩展名。如果你想要的话,你可以使用压缩文件名.tar.gz扩展名(建议)
谢谢。这会压缩“folderToCompress”下的所有内容(即递归)吗? – Doug
folderToCompress中的所有内容都将压缩文件名 – amitchhajer
您可能想要选择'compressFileName',因此它包含'.tar.gz'扩展名,否则您会让其他人都疯狂。 – drewish
@amitchhajer的帖子适用于GNU tar。如果有人发现这篇文章,需要它到非GNU
系统上工作,他们可以这样做:
tar cvf - folderToCompress | gzip > compressFileName
要展开存档:
zcat compressFileName | tar xvf -
除了可移植性以外,如果您想将参数传递给gzip(例如--test或--best),此解决方案很有用,因为afaik甚至GNU tar没有提供将参数发送到gzip的方法。 –
这是多功能的,因为您也可以使用其他压缩机。例如'pigz',因为它可以更好地利用cpu(一个zip的多线程实现),所以速度更快。 –
有很多的工作递归命令压缩方法并且很高兴知道谁是最终受众。
即如果要发送给某人运行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
针对linux-> windows的+1 –
'就其本质gzip'只压缩单文件。要将多个文件放入一个文件中供后续gzipping使用,请使用'tar'。 – Thomas