Linux下的压缩及归档
Linux下常用的压缩格式有:
gz,bz2,xz,zip,Z //只能压缩文件不能压缩目录,如果传递一个目录,他会把目录中的文件逐个压缩
、、压缩算法:算法不同,压缩比也不同
gz:gzip,压缩后为 .gz //gunzip解压缩
-d :解压缩
-#(#范围为1-9):指定压缩比,压缩比越小,压缩速度越快,压缩后的文件也越大,默认为6
zcat:在不解压的情况下查看压缩文本文件的内容(临时解压文件查看,关闭之后临时文件被删除)
bz2:bzip2,压缩后为.bz2
比gzip更大压缩比的压缩工具,对大文件来讲,bzip2有很大优势,使用格式近似 //加压缩bunzip2
-d:
-#:(1-9)
-k:可以保存原文件
bzcat:如果是文本文件,可以不用解压缩直接查看
xz:压缩后为.xz 用法相似 ||unxz,xzdec解压很小的文件,解压到屏幕
-d:
-#:
-c:输入到屏幕上来
-k:保留原文件
xzcat:
只能压缩文件,压缩比会更大
可以一次压缩一个文件也可以一次压缩多个文件
默认这些压缩命令压缩完会删除原文件,只保留压缩后的文件
解压缩之后也会默认删除原来的压缩文件,只保留解压缩之后的文件
zip: //压缩后默认不删除原文件
可以压缩目录,但压缩比不大
使用格式:zip 指定压缩名 要压缩的文件或目录
eg:zip test.zip test/ //压缩test目录,压缩完之后是test.zip
zip将多个文件压缩在一起,是一个既压缩又归档的命令
unzip 压缩文件:解压缩
archive 归档,把多个文件整合在一起,归档本身并不意味着压缩
tar: //只归档不压缩的文件。。。.tar
-c:创建归档文件
-f FILE.tar:操作的归档文件,指定压缩后文件的名称,f后必须带上参数
eg:tar -cf test.tar test*
-xf FILE.tar:展开归档文件
--xattrs: 表示在归档的同时,保留文件的扩展属性信息
-tf FILE.tar:不展开归档,查看归档到底归档了哪些文件
即归档又压缩:
-zcf:调用gzip,并创建归档文件
eg:tar -zcf test.tar.zip test/
-zxf:先解压缩后归档
eg:tar -zxf test.tar.zip //删除时-z选项可以删除
-jcf:调用bzip2,并创建归档文件
-jxf:先解压缩后归档
-Jcf:调用xz,并创建归档文件
-Jxf:先解压缩后归档
-gtf:不解压直接看归档的文件 -g可以省略,因为系统可以根据后缀名判断解压的类型
tar也是一个很好用的备份工具
cpio: 做成归档或者展开归档 把文件做成归档或者从归档中复制出来文件
练习:写一个脚本
从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件
sum.sh //直接跟命令行交互
#!/bin/bash
//echo -n "Input two intergers" //-n是为了不换行的输入
read -p "Input two intergers" A B //-p直接提示
echo "$A + $B is $[$A+$B]"
#!/bin/bash
read -p "Three files:" FILE1 FILE2 FILE3
read -p "Destination" DEST
read -p "Compress[gzip|bzip|xz]:" COMP
case COMP 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 "Unknown"
exit 9
;;
esac