linux 命令之 压缩

541 阅读2分钟

打包与压缩:

常用命令

tar

  • 仅打包 不压缩: 不用使用任何压缩参数
    tar -cvf xxxx.tar /path/xxxxx
    # tar 命令
    # -c 选项表示创建一个新的归档文件
    # -v 显示过程 (可选)
    # -f 指定文件名 
    
  • gzip 格式(压缩速度快 文件为.tar.gz 或者.tgz)
tar -czvf xxxx.tar.gz  /path/xxxxxx  
# -z 使用gzip 进行压缩
  • bzip2 格式(压缩率更高)
tar -cjvf xxxx.tar.bz2  /path/xxxxxx  
# -j 使用bzip2 进行压缩
  • xz 格式(压缩率最高)
tar -cJvf xxxx.tar.xz  /path/xxxxxx
# -J 使用xz 格式进行压缩

zip 格式压缩

zip -r xxxx.zip /path/xxxx
#-r 递归压缩目录

gzip 单文件压缩

直接压缩单个文件 生成一个.gz 文件

    gzip filename # 压缩为filename.gz 原文件回被删除
    gunzip filename.gz # 解压操作

解包与解压

解压tar 包

  • 解压到当前目录 解压命令为 -x
tar -xvf xxxx.tar
 // 解压 通过gzip 压缩的文件 .tag.gz
tar -xzvf input.tar.gz 
tar -xjvf input.tar.bz
tar -xJvf input.tar.xz
  • 解压到指定目录 命令为 -C
tar -xvf xxx.tar -C /xxxx/xxx
tar -xzvf xxx.tar.gz -C /xxxx/xxxx
tar -xjvf xxx.tar.bz2 -C /xxxx/xxxx
tar -xJvf xxx.tar.xz -C /xxxx/xxx

解压 zip 包

unzip input.zip # 解压到当前文件夹
unzip input.zip -d /xxxx/xxxx # 解压到指定文件夹

解压时覆盖问题

tar 命令进行解压时默认会覆盖原文件,而unzip 命令则会进行询问,但是都可以根据参数调整默认行为

  • tar 默认会覆盖原文件,并不会给出任何提示

tar 参数控制:

  1. --keep-old-files(缩写k)

保留现有文件不进行覆盖

  1. --overwrite强制覆盖同名文件(默认行为,通常无需显式指定)。
  2. --skip-old-files:跳过同名文件,默认不覆盖

unzip 参数控制

  1. -o 强制覆盖不询问
  2. -n 不覆盖现有文件:仅解压压缩包中不存在的新文件
  3. -u 仅根据更改时间覆盖旧文件

注意点

tar 进行打包压缩时 -f 应该放到最后