linux中tar负责归档、gzip等负责压缩,常用组合为czf(压缩)、xzf(解压)、tzf(查看);tar选项顺序无关但f必须接文件名,-c指定解压路径,--strip-components可去顶层目录。

Linux中处理压缩包最常用的是tar配合gzip(或zlib)的组合,tar本身不压缩,只归档;真正压缩靠gzip、bzip2或xz等工具。掌握它们的搭配用法,就能高效完成日常打包、压缩、解压任务。
tar命令核心选项与常见组合
tar通过单字符选项控制行为,常用组合已固化为约定俗成的写法(如czf、xzf)。关键点在于:选项顺序无关紧要,但f必须紧跟文件名,且通常放在最后。
- c:创建新归档(create)
- x:从归档中提取文件(extract)
- v:显示详细过程(verbose),方便确认操作内容
- f:指定归档文件名(file),必须带参数,且不能省略
-
z:调用
gzip压缩/解压(.tar.gz 或 .tgz) -
j:调用
bzip2(.tar.bz2) -
J:调用
xz(.tar.xz)
例如:tar -czf archive.tar.gz dir1/ file.txt 表示将dir1/和file.txt打包并用gzip压缩,生成archive.tar.gz。
压缩:一步到位生成.tar.gz
这是最典型的压缩场景。注意路径处理——tar默认使用相对路径,建议进入源目录再执行,避免压缩包里出现冗余父目录。
- 在目标目录内压缩:
cd /path/to/data && tar -czf backup.tar.gz * - 排除特定文件或目录:
tar -czf backup.tar.gz --exclude='logs' --exclude='*.tmp' . - 只压缩指定后缀文件:
tar -czf scripts.tar.gz *.sh *.py
若提示command not found: gzip,说明系统未安装gzip,可运行sudo apt install gzip(Debian/Ubuntu)或sudo yum install gzip(CentOS/RHEL)补全。
解压:安全提取并控制位置
解压前建议先查看包内容,避免“爆炸式解压”(即解出大量文件到当前目录):
- 预览内容:
tar -tzf archive.tar.gz | head -20(t表示list) - 解压到指定目录:
tar -xzf archive.tar.gz -C /target/dir/(-C必须大写) - 解压时去掉第一层目录(常用于GitHub下载的源码包):
tar -xzf project-v1.0.tar.gz --strip-components=1 -C ./output/
如果解压报错Cannot open: No such file or directory,大概率是-f后跟的文件名写错了,或当前路径不对。
gzip单独使用:处理非tar文件
gzip也可直接压缩单个文件(如日志),生成.gz后缀文件,不涉及归档:
- 压缩:
gzip logfile.txt→ 生成logfile.txt.gz,原文件被删除 - 解压:
gunzip logfile.txt.gz或gzip -d logfile.txt.gz - 查看内容不解压:
zcat logfile.txt.gz | tail -10 - 压缩并保留原文件:
gzip -c logfile.txt > logfile.txt.gz
注意:gzip只能处理单个文件;多个文件需先用tar归档,再用gzip压缩,这才是.tar.gz的本质。
理解tar是归档器、gzip是压缩器,二者分工明确,组合使用才真正高效。记熟czf(压缩)、xzf(解压)、tzf(查看)这三个组合,90%的场景都能覆盖。










