压缩与归档
压缩率(Compression ratio)
指文件压缩后的大小与压缩前的大小之比,压缩率越小,压缩效果越好
压缩工具
compress&uncompresse
压缩产生.Z文件
compress [-cfv][-b bits][file]
-c:压缩后保留原文件,但默认不保留
-d:解压缩文件
-f:强制压缩文件
-v:显示完整的压缩过程
gzip&gunzip&zcat
gzip [OPTION]... FILE...
gzip需要按照文件后缀名来解压缩,所以压缩的文件名称最好要使用.gz后缀
-d:解压缩,相当于gunzip
-#:指定压缩比,默认为6;数字越大压缩比越大,范围是1-9
-c:将压缩结果输出至标准输出;因此经常的使用方式是:
gzip -c FILE > file.gz
[root@localhost lab]# gzip -c zeroFile > zero.gz
[root@localhost lab]# ls
zeroFile zeroFile.xz zero.gz
gunzip FILE
直接解压文件,同样地,解压缩也会删除原来的压缩文件
zcat FILE
直接查看文本文件内容而不用解压,适用于查看小文件
bzip2&bunzip2&bzcat
bzip2 [OPTION]... FILE...
bzip2压缩也会删除源文件,文件后缀名为bz2
-d:解压缩,相当于bunzip2
-#:指定压缩比
-k:保留原文件,有keep的含义
bunzip2 FILE
直接解压文件
bzcat FILE
直接查看文本文件但是不解压
xz&unxz&xzcat|lzma&unlzma|lzcat
xz [OPTION]... FILE...
-d:解压缩
-#:指定压缩比
-k:保留原文件
[root@localhost lab]# ls
zeroFile
[root@localhost lab]# xz -k zeroFile
[root@localhost lab]# ls
zeroFile zeroFile.xz
注意:以上命令都不能压缩目录,这就是为什么有归档的原因
以上几个工具选项都比较类似,基本是命令直接接参数,-d表示解压缩-c表示保留原文件-#指定压缩比-k保留原文件
归档工具
Linux中目录知识一种存储路径映射的文件,对目录压缩并不能对目录中的文件进行压缩,所以就需要把各个分散的文件集中在一起形成一种新的文件,这就是归档文件。归档一般用于备份,而为了减少存储空间,一般和压缩一起进行。所以归档时可以顺便压缩(解压缩)文件。
备份是制作文件的副本,归档后要把当前文件系统中归档文件复制到其它存储介质中才有效
tar
tar [OPTION]... FILE...
-c 创建归档
-x 展开归档
-t 查看归档文件的文件列表
-f, --file=ARCHIVE 指定归档后的文件或者设备
-C 指定展开归档到何处
-z 使用gzip,归档并压缩
zcf、zxf,其中zxf中的z可以省略,因为gzip可以自动识别
-j 使用bzip2,归档并压缩
jcf、jxf
-J 使用xz,归档并压缩
Jcf、Jxf
-P 使用绝对路径,忽略/
注意:
tar选项的dash可以省略
tar -cf选项中f必须在c之后,因为顺序不同那么参数的作用对象就不同
[root@localhost lab]# ls
fstab grub.conf issue zeroFile
[root@localhost lab]# tar -Jcf total.tar.xz ./*
[root@localhost lab]# ls
fstab grub.conf issue total.tar.xz zeroFile
[root@localhost lab]# tar -t total.tar.xz
^C
[root@localhost lab]# xz -dk total.tar.xz
[root@localhost lab]# ls
fstab grub.conf issue total.tar total.tar.xz zeroFile
**注意:归档的过程中,最重要的参数就是-f,不论任何操作都需要f选项指定归档的对象。**
如何归档目录?
从以上可以发现,在使用绝对路径的时候,最好使用-P选项,否则就会出现tar: Removing leading `/’ from member names这种提示,
而解压的时候,如果不指定路径,就会解压到当前目录下,当时如果指定了路径,就一定要是原来归档文件的原始路径,否则,就会出现命令成功但是找不到解压到了什么地方的情况,通过etc目录的时间戳就可以发现-C /指定解压目录后覆盖了原始文件
cpio
制作归档文件或者提取文件
1. copy-out模式:将一组文件copy到一个归档文件
\# 将当前目录下的所有文件传递给cpio并输出为一个归档的文件arch
[root@localhost lab]# ls | cpio -o > /backup/arch
67 blocks
- copy-in模式:从归档文件读取文件并展开
- -p模式:从某个目录读取所有文件,包括子目录到另一个目录,但是不以archive方式存放
\#将当前目录下的所有文件传递给cpio并输出到另一个目录,达到了完全的复制
[root@localhost lab]# ls | cpio -p /backup/
66 blocks
归档压缩
zip
zip -r destFILE.zip srcDIR
递归压缩目录
unzip
unzip destFILE.zip -d /DIR
指定目录解压
zip命令可以对目录压缩
……
下载redis-3.0.2.tar.gz,展开至/tmp目录;而后得到新创建压缩为xz格式
tar -zxf redis-2.8.7.tar.xz -C /tmp/
tar -Jcf redis-2.8.7