在 Linux 中一些压缩工具仅支持对单文件进行操作,如果想对目录或多文件进行压缩,则必须先打包成一个文件,然后再进行压缩。

gzip

解压缩,后缀名gz

# 压缩,将删除原文件
gzip filename
# 压缩,保留原文件
gzip -c filename > filename.gz
# 解压
gzip -d filename.gz

注:gzip 只能针对普通文件进行压缩和解压,不支持文件夹和符号链接。

bzip2

解压缩,后缀名bz2

# 压缩,将删除源文件
bzip2 filename
# 压缩,保留原文件
bzip2 -c filename > filename.bz2
# 解压,同 bunzip2
bzip2 -d filename.bz2

xz

解压缩,后缀名xz

# 压缩,默认保留源文件
xz filename
# 解压
xz -d filename.xz

tar

打包解包,后缀名tar

# 打包并压缩指定目录
tar -czvf filename.tar.gz dir
# 指定压缩等级,默认 6,最高 9
tar 9 -czvf filename.tar.gz dir
# 解压缩
tar -xzvf filename.tar.gz
# 只查看,不解压
tar -ztvf filename.tar.gz

可以发现压缩、解压和查看三个参数只有一个区别,它们分别表示:

  • -c:压缩
  • -x:解压
  • -t:查看

另外的几个参数都是一致的:

  • -z:使用 gzip 进行解压缩
  • -v:显示执行过程
  • -f:指定文件名

另外也支持 bzip2 和 xz 的解压缩:

# bzip2 打包并压缩
tar -jcvf filename.tar.bz2 dirname
# bzip2 解包并解压
tar -jxvf filename.tar.bz2
# xz 打包并压缩
tar -jcvf filename.tar.xz dirname
# xz 解包并解压
tar -jxvf filename.tar.xz
  • -j:使用 bzip2 进行解压缩
  • -J:使用 xz 进行解压缩

zip

打包解包和解压缩文件,后缀名zip

# 压缩 zip(默认保留源文件)
zip -r filename.zip dirname
# 解压 unzip
unzip filename.zip
# 解压到指定目录
unzip -d nfname/ filename.zip