215

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

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

4

3 回答 3

410
tar -zcvf compressFileName.tar.gz folderToCompress

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

编辑:经过审查和评论,我意识到人们可能会对没有扩展名的 compressFileName 感到困惑。如果你愿意,你可以使用 .tar.gz 扩展名(如建议)和 compressFileName

于 2012-09-08T14:40:20.523 回答
66

有很多压缩方法可以在命令行中递归工作,很高兴知道最终受众是谁。

即,如果要将其发送给运行 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

必须小心 tar 以及事情是如何被焦油化/提取的,例如,如果我运行

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


pwd

/home/我的用户名

tar -xvzf passwd.tar.gz

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

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

 Removing leading `/' from member names
于 2012-09-08T17:22:55.387 回答
18

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

tar cvf - folderToCompress | gzip > compressFileName

要扩展存档:

zcat compressFileName | tar xvf -
于 2012-09-08T17:22:28.230 回答