可能重复:
压缩一组目录并创建一个tar压缩文件
这篇文章描述了如何在目录结构中逐个gzip每个文件。然而,我需要做一些略微不同的事情。我需要为某个目录下的所有文件生成一个大的gzip文件。我还需要能够指定压缩文件的输出文件名(例如files.gz),并覆盖已经存在的旧压缩文件。
tar -zcvf compressFileName.tar.gz folderToCompress
所有位于folderToCompress文件夹中的内容都将被压缩到compressFileName中。
编辑:经过审核和评论,我意识到如果没有扩展名,compressFileName可能会让人感到困惑。如建议所述,可以使用.tar.gz扩展名并与compressFileName一起使用。
compressFileName
,以便它包含.tar.gz
扩展名,否则会让其他人发疯。 - drewishtar -zcvf two-dirs.tar.gz dir-one dir-two
将创建一个包含两个目录的归档文件。 - Zoltán*
来压缩当前目录下的所有内容,例如:tar -zcvf all.tar.gz *
。 - user133408有许多递归命令行工作的压缩方法,了解最终受众是很重要的。
例如,如果要发送给正在运行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/myusername
tar -xvzf passwd.tar.gz
这将创建/home/myusername/etc/passwd
不确定所有版本的tar是否会这样做:
Removing leading `/' from member names
@amitchhajer的帖子适用于GNU tar。 如果有人发现这篇文章并需要在非GNU
系统上工作,他们可以这样做:
tar cvf - folderToCompress | gzip > compressFileName
展开存档:
zcat compressFileName | tar xvf -
pigz
更快,因为它可以更好地利用 CPU(一种多线程实现的 zip)。 - Ortwin Angermeier
gzip
本质上只能压缩单个文件。如果要将多个文件放入一个文件中以便进行 gzipping,请使用tar
。 - Thomas