GZIP 压缩

# gzip 压缩单个文件, 后缀.gz
$ gzip [选项] [被压缩文件]    # 删除原文件会自动生成一个带有 .gz 的文件 
        -1                  # 压缩时间最少--fast
        -9                  # 压缩比率最高--best
        -l                  # 输出压缩文件内容
        -k                  # 不删除输入文件
        -v                  # 显示压缩详细信息
        -f                  # 覆盖现有的压缩后的文件
        -r                  # 将目标目录下所有文件全部压缩
        -t                  # 测试压缩包的完整性
        -d                  # 解压缩

# gzip 解压缩单个文件
$ gunzip [选项] [被解压文件]
         -lkvfrt            # 同上
# 只能压缩/解压单个文件,并且压缩/解压后自动删除原文件
# 重复压缩虽然有效,但是文件大小基本不能再变小, 另外此压缩命令对文件后缀名敏感

ZIP 通用压缩

#.zip是多平台通用的一种压缩文件类型
$ zip [选项] [目标包名] [源文件(夹)]
      -0                        # 仅存储
      -1                        # 最快
      -9                        # 最好

      -r                        # 压缩目录
      -c                        # 添加一行注释
      -z                        # 添加压缩文档注释

      -e                        # 设置密码
      -f                        # 刷新仅更改的文件
      -u                        # 更新压缩包内文件

      -d                        # 删除压缩包内指定文件
      -m                        # 将目标文件移动进入压缩包
      -x                        # 排除指定文件
      -i                        # 包含指定文件

      -F                        # 修复zip文件
      -T                        # 测试压缩文件
# 重复压缩不改善体积,压缩过程不写目标文件后缀会自动追加.zip,但解压操作对后缀不敏感
$ unzip [选项] [压缩包]
      -l                        # 查看压缩包
      -t                        # 测试包
      -p                        # 解压到管道
      -z                        # 打印压缩包注释
      -n                        # 永不覆盖已存在的文件
      -o                        # 不询问直接覆盖
      -X                        # 恢复 UID/GID 信息
      -K                        # 保留 SetUID/SetGID/StickyBIT 权限

BZIP2 压缩

#bzip2压缩,后缀.bz2
$ bzip2 [选项] [文件]
          -1                    # 最快
          -9                    # 最好
          -k                    # 保留原文件
          -z                    # 强制压缩
          -d                    # 解压
          -f                    # 覆盖现有文件
          -t                    # 测试压缩包
          -v                    # 列出详细信息
$ bunzip2 [选项] [文件]
#只能压缩/解压单个文件

XZ 压缩 (有损压缩)

$ xz [选项] [被压缩文件]
       -0...-9               # 压缩等级, 默认为 6
       -z                    # 强制压缩
       -d                    # 强制解压
       -t                    # 检查压缩包完整性
       -l                    # 输出压缩包信息
       -k                    # 保留输入文件
       -e                    # 占用更多CPU进行极致压缩
       -T                    # 指定线程数, 0 表示根据CPU核心尽可能的多用线程
       -v                    # 列出详细信息
$ unxz [选项] [文件]
#只能压缩/解压单个文件

Linux 多文件打包/压缩

$ tar [选项] [目标包名] [源文件(夹)]
      -c                        # 创建包
      -x                        # 展开包
      -f                        # 指定文件(必选)
      -v                        # 列出详细信息
      -t                        # 列出包内文件
      -z                        # 调用 gzip/zip
      -j                        # 调用 bzip2
      -J                        # 调用 xz
      -a                        # 根据文件扩展自动调用压缩算法

#重复压缩有效,但是不能改善体积;对后缀不敏感
$ tar -zcvf hello.tar.gz hello
$ tar -jcvf hello.tar.bz2 hello

$ tar -zxvf hello.tar.gz
$ tar -jxvf hello.tar.bz2

几种压缩工具的比较

|压缩工具|扩展名|压缩率|压缩速度|解压缩速度|特性|适用场景|
|—|—|—|—|—|—|—|
|gzip|.gz|中等|快|快|通用压缩工具,支持多种文件格式|日常文件压缩,传输|
|zip|.zip|中等|中等|中等|支持多文件压缩,可包含目录结构,支持加密|文件打包,跨平台传输|
|bzip2|.bz2|高|慢|慢|压缩率高,但压缩和解压缩速度较慢|高压缩率需求,如存储空间有限|
|xz|.xz|最高|慢|快|压缩率最高,但压缩速度较慢,解压缩速度快于bzip2|追求最高压缩率,如备份,离线存储|