|
25、压缩、解压缩及归档工具
2021年07月23日 |
|
25.1 早期的压缩命令 compress: FILENAME.Z uncompress 25.2 目前常用的压缩命令 压缩格式:gz, bz2, xz, zip, Z 压缩算法:算法不同,压缩比也会不同; 1、gzip: .gz gzip /PATH/TO/SOMEFILE:压缩完成后会删除原文件 -d:解压缩 -c:将结果输出至标准输出 -#:1-9,指定压缩比,默认是6; gunzip: 解压缩 gunzip /PATH/TO/SOMEFILE.gz: 解压完成后会删除原文件 查看压缩文件内容 zcat /PATH/TO/SOMEFILE.gz: 不解压的情况,查看文本文件的内容 3、bzip2: .bz2 比gzip有着更大压缩比的压缩工具,使用格式近似 bzip2 /PATH/TO/SOMEFILE -d:解压缩 -#: 1-9,默认是6 -k: 压缩时保留原文件 bunzip2 /PATH/TO/SOMEFILE.bz2 解压缩命令 bzcat:不解压查看压缩文件内容 4、xz: .xz xz /PATH/TO/SOMEFILE -d:解压缩 -#: 1-9, 默认是6 -k: 压缩时保留原文件 unxz:解压缩 xzdec:体积很小的解压缩xz文件的软件 xzcat :不解压的情况,查看文本文件的内容 5、zip zip: 既归档又压缩的工具,可以压缩目录 zip FILENAME.zip FILE1 FILE2 …: 压缩后不删除原文件 unzip FILENAME.zip 使用deflat的压缩算法 archive: 归档,归档本身并不意味着压缩 分卷打包 zip -s 50m -r test.zip /etc #(把etc目录按50M大小分卷打包。) -s: 创建分卷的大小 -r: 循环压缩文件夹下面的内容 zip -s 0 test.zip –out etc.zip #把test.zip分卷合并成etc.zip压缩包 6、tar tar: 归档工具,只归档不压缩, .tar -c: 创建归档文件 -f FILE.tar: 操作的归档文件 -x: 展开归档 –xattrs: 归档时,保留文件的扩展属性信息 -t: 不展开归档,直接查看归档了哪些文件 -zcf: 归档并调用gzip压缩 -zxf: 调用gzip解压缩并展开归档,-z选项可省略 -jcf: 归档并调用bzip2压缩 -jxf:调用bzip2解压缩并展开归档,-j选项可省略 -Jcf: 归档并调用 xz压缩 -Jxf:调用xz解压缩并展开归档,-J选项可省略 7、ccpio cpio: 比tar更古老的归档工具 练习:写一个脚本 从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件; read: -p “PROMPT”: 给出提示 [root@localhost ~]# vim tar.sh [root@localhost ~]# bash -n tar.sh [root@localhost ~]# ./tar.sh Please input three file:a b c Destination:tar Compress type:(gzip,bzip2,xz)xz [root@localhost ~]# ll total 20 -rw——-. 2 root root 1426 May 27 06:31 a -rw——-. 2 root root 1426 May 27 06:31 anaconda-ks.cfg lrwxrwxrwx. 1 root root 15 Jul 21 21:46 b -> anaconda-ks.cfg -rw-r–r–. 1 root root 0 Jul 23 03:56 c -rwxr-xr-x. 1 root root 378 Jul 23 04:09 tar.sh -rw-r–r–. 1 root root 1072 Jul 23 04:09 tar.tar.xz -rw-r–r–. 1 root root 32 Jul 23 03:12 test.xz [root@localhost ~]# tar -tf tar.tar.xz a b c #脚本 #!/bin/bash # read -p “Please input three file:” FILE1 FILE2 FILE3 read -p “Destination:” DEST read -p “Compress type:(gzip,bzip2,xz)” TYPE case $TYPE in gzip) tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3;; bzip2) tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3;; xz) tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3 xz ${DEST}.tar;; $) echo “wrong Input,exiting” exit 9;; esac |