25、压缩、解压缩及归档工具

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

Comments Closed.