第8章 归档和压缩

所属:第二部分 使用文件 来源:Linux命令速查手册

归档是把多个文件打包成一个文件,压缩是减小文件体积。两者经常结合使用。


8.1 用zip归档和压缩文件

zip archive.zip file1 file2
zip -r archive.zip directory/

创建zip压缩包。

  • -r 递归打包目录
  • zip格式跨平台好,Windows/Mac都能直接打开

8.2 用zip获得最好的压缩效果

zip -9 archive.zip files

压缩级别:-0(不压缩,最快)到 -9(最大压缩,最慢),默认 -6


8.3 用密码保护压缩的Zip文档

zip -e archive.zip files
zip --encrypt archive.zip files

加密压缩,解压需要密码。

⚠️ zip的加密强度不高,敏感数据建议用更专业的加密工具。


8.4 解压文件

unzip archive.zip
unzip archive.zip -d /path/to/extract/

解压zip文件。-d 指定解压目录。


8.5 列出将要解压的文件

unzip -l archive.zip

列出压缩包内容,不解压。


8.6 测试将要解压的文件

unzip -t archive.zip

测试压缩包完整性,检查文件是否损坏。


8.7 用gzip归档和压缩文件

gzip filename

压缩单个文件,生成 .gz 文件。

⚠️ 注意:gzip会替换原文件!压缩后原文件消失,只剩 .gz。

gzip只能压缩单个文件,要打包多个文件先用tar。


8.8 用gzip递归式地归档和压缩文件

gzip -r directory
gzip --recursive directory

递归压缩目录下所有文件(每个文件单独压缩成.gz)。


8.9 用gzip获得最好的压缩效果

gzip -9 filename

级别1(最快)到9(最小),默认6。

保留原文件:

gzip -c filename > filename.gz

8.10 解压用gzip压缩的文件

gunzip filename.gz
gzip -d filename.gz

解压,同样会替换 .gz 文件。


8.11 测试将要用gunzip解压的文件

gzip -t filename.gz

测试完整性。

不解压查看内容:

zcat filename.gz
zless filename.gz

8.12 用bzip2归档和压缩文件

bzip2 filename

bzip2压缩率比gzip更高,但速度更慢。生成 .bz2 文件。

适合压缩大文件,节省空间优先的场景。


8.13 用bzip2获得最好的压缩效果

bzip2 -9 filename

级别1到9,默认9。


8.14 解压用bzip2压缩的文件

bunzip2 filename.bz2
bzip2 -d filename.bz2

8.15 测试将要用bunzip解压的文件

bzip2 -t filename.bz2

不解压查看:

bzcat filename.bz2
bzless filename.bz2

8.16 用tar归档文件

tar -cf archive.tar files/
tar --create --file=archive.tar files/

创建tar归档(只打包,不压缩)。

  • -c 创建(create)
  • -f 指定文件名(file),必须放在最后,后面紧跟文件名
  • -v 显示过程(verbose)

8.17 用tar和gzip归档和压缩文件

tar.gz (tgz)

tar -czf archive.tar.gz files/
tar -czf archive.tgz files/
  • -z 使用gzip压缩

tar.bz2 (tbz2)

tar -cjf archive.tar.bz2 files/
tar -cjf archive.tbz2 files/
  • -j 使用bzip2压缩

tar.xz

tar -cJf archive.tar.xz files/
  • -J 使用xz压缩(压缩率最高,速度最慢)

8.18 测试将要解开和解压的tarball

tar -tzf archive.tar.gz     # 列出tar.gz内容
tar -tjf archive.tar.bz2    # 列出tar.bz2内容
tar -tf archive.tar         # 列出普通tar内容
  • -t 列出内容(list)

8.19 解开和解压tarball

tar -xzf archive.tar.gz     # 解压tar.gz
tar -xjf archive.tar.bz2    # 解压tar.bz2
tar -xf archive.tar         # 解压普通tar
tar -xf archive.tar.xz      # 解压tar.xz(自动识别格式)
  • -x 提取(extract)

常用选项组合:

tar -xzvf archive.tar.gz    # 解压并显示过程
tar -xf archive.tar.gz -C /tmp/   # 解压到指定目录

新版tar可以自动识别压缩格式,-xf 通吃各种格式。


8.20 小结

压缩工具对比

格式工具扩展名压缩率速度跨平台
zipzip/unzip.zip一般✅ 好
gzipgzip/gunzip.gz一般一般
bzip2bzip2/bunzip2.bz2一般
xzxz/unxz.xz最高最慢一般

tar 选项速记

选项功能
-c创建(create)
-x提取(extract)
-t列出(list)
-f指定文件(file)
-v显示过程(verbose)
-zgzip格式
-jbzip2格式
-Jxz格式
-C指定目标目录

最常用命令

# 打包压缩
tar -czf output.tar.gz /path/to/files/
 
# 解压
tar -xf archive.tar.gz
 
# 查看内容
tar -tf archive.tar.gz

Linux Shell 压缩 归档 tar gzip bzip2 zip