Linux下压缩包生成与解压命令以及进度

不同后缀压缩包的打包与加压命令

  • .tar

    • 解包:tar xvf FileName.tar
    • 打包:tar cvf FileName.tar DirName
  • .gz

    • 解压1:gunzip FileName.gz
    • 解压2:gzip -d FileName.gz
    • 压缩:gzip FileName
  • .tar.gz.tgz

    • 解压:tar zxvf FileName.tar.gz
    • 压缩:tar zcvf FileName.tar.gz DirName
  • .bz2

    • 解压1:bzip2 -d FileName.bz2
    • 解压2:bunzip2 FileName.bz2
    • 压缩: bzip2 -z FileName
  • .tar.bz2

    • 解压:tar jxvf FileName.tar.bz2
    • 压缩:tar jcvf FileName.tar.bz2 DirName
  • .bz

    • 解压1:bzip2 -d FileName.bz
    • 解压2:bunzip2 FileName.bz
    • 压缩:未知
  • .tar.bz

    • 解压:tar jxvf FileName.tar.bz
    • 压缩:未知
  • .Z

    • 解压:uncompress FileName.Z
    • 压缩:compress FileName
  • .tar.Z

    • 解压:tar Zxvf FileName.tar.Z
    • 压缩:tar Zcvf FileName.tar.Z DirName
  • .zip

    • 解压:unzip FileName.zip
    • 压缩:zip FileName.zip DirName
  • .rar

    • 解压:rar x FileName.rar
    • 压缩:rar a FileName.rar DirName
  • .lha

    • 解压:lha -e FileName.lha
    • 压缩:lha -a FileName.lha FileName
  • .rpm

    • 解包:rpm2cpio FileName.rpm | cpio -div
  • .deb

    • 解包:ar p FileName.deb data.tar.gz | tar zxf -
  • .tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea

    • 解压:sEx x FileName.*
    • 压缩:sEx a FileName.* FileName

    sEx只是调用相关程序,本身并无压缩、解压功能,请注意!

tar 命令详解

  • -c: 建立压缩档案
  • -x:解压
  • -t:查看内容
  • -r:向压缩归档文件末尾追加文件
  • -u:更新原压缩包中的文件

以上五个是独立的命令参数,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.


下面的参数是根据需要在压缩或解压档案时可选的。

  • -z:有gzip属性的 .tar.gz
  • -j:有bz2属性的 .tar.bz2
  • -J :有xz属性的 .tar.xz
  • -Z:有compress属性的 .tar.Z
  • -O:将文件解开到标准输出

实例

  • 查看usrdata.tar.gz包的内容tar tf usrdata.tar.gz
  • 解压出usrdata.tar.gz包的conf目录tar xvf usrdata.tar.gz conf
  • 解压或压缩进度展示
    • 官方文档
    • github中相关脚 https://github.com/callinglove/programming_examples/tree/master/script/shell/tools
    # file to decompress, directory
    function tar_decompress() {
        local total_size=51200
        local tar_file=$1
        local tar_dir=./
        if [[ $# -eq 2 ]]; then
            tar_dir=$2
        fi
    
        if [[ "${tar_file}" == *.tar.gz ]]; then
            total_size=$(gzip -l "${tar_file}" | tail -1 | awk '{print $2}')
        elif [[ "${tar_file}" == *.tar.xz ]]; then
            total_size=$(xz --robot -l "${tar_file}" | tail -1 | awk '{print $5}')
        fi
    
        local blocking_factor=$((total_size/512/100+1))
        local checkpoint=1
    
        tar --blocking-factor=$blocking_factor --checkpoint=1 --checkpoint-action="ttyout=unpack ${tar_file##*/} %u%    \r" -xpf $tar_file -C $tar_dir
        echo "decompress ${tar_file##*/} complete"
    }
    
    # tar file name, file list to compress
    function tar_compress() {
        local tar_file=$1
        shift
        local file_to_tar="$@"
        local total_size=$(du -sb ${file_to_tar} | awk '{sum+=$1} END {print sum}')
    
        local blocking_factor=$((total_size/512/100+1))
    
        tar -zcpf ${tar_file} ${file_to_tar}  --blocking-factor=${blocking_factor} --checkpoint=1 --checkpoint-action="ttyout=pack ${tar_file##*/} %u%    \r" --totals
    }
    

gzip 命令详解

减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。

语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下:

-c 将输出写到标准输出上,并保留原有文件。-d 将压缩文件解压。-l 对每个压缩文件,显示下列字段: 压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。-t 测试,检查压缩文件是否完整。-v 对每一个压缩和解压的文件,显示文件名和压缩比。-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),-9 或–best表示最慢压缩方法(高压缩比)。系统缺省值为 6。指令实例:

gzip *% 把当前目录下的每个文件压缩成 .gz 文件。gzip -dv *% 把当前目录下每个压缩的文件解压,并列出详细的信息。gzip -l *% 详细显示例1中每个压缩的文件的信息,并不解压。gzip usr.tar% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

callinglove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值