Linux中常用的有3种压缩工具gzip,bzip2,xz,最早出现的是gzip,压缩比也不如后两者,xz最后出现,压缩比也是最佳的。
1、gzip(后缀名.gz)
-d #解压缩(gunzip)
-c #将压缩后的结果输出至标准输出
gzip -c /path/to/somefile > /path/to/filename.gz
-num #num指定压缩比(0-9),默认为6
zcat filename.gz #直接查看gzip压缩后的文件的内容
1
2
3
4
5
6
| [iyunv@baby-CentOS abc]# gzip -c /etc/passwd > ./passwd
[iyunv@baby-CentOS abc]# zcat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
.....
.....
|
2、bzip2(后缀名.bz2)
-d #解压缩(bunzip2) -c #将压缩后的结果输出至标准输出 -num #num指定压缩比(0-9),默认为6 -k #保留原文件 bzcat filename.bz2 #直接查看gzip压缩后的文件的内容
3、zip(后缀名.xz)
-d #解压缩(unxz)
xzcat #直接查看gzip压缩后的文件的内容
其他选项与bzip2类似。
归档工具:tar
能够实现将多个文件打包成为单个文件,然后进行压缩
-c #打包文件
-x #加压缩或解包功能,搭配-C选项可在指定目录中解开打包文件
-t #直接查看打包文件(查看文件名)
-c,-t,-x这3个选项不可同时使用
-v #显示解压或打包过程的详细信息
-f filename #在打包过程中filename为打包后生成的文件名,在解压过程中,filename为需要被处理的打包文件
-C dirname#在指定目录中解开打包文件
-z #通过gzip进行压缩
-j #通过bzip2进行压缩
-J #通过xz进行压缩
-p(小写) #保留备份数据的原本权限与属性
-P(大写) #保留绝对路径
备份/etc目录
1
2
3
4
5
6
7
8
9
| [iyunv@baby-CentOS abc]# tar -zc -f etc.tar.gz /etc > /dev/null 2>&1
[iyunv@baby-CentOS abc]# tar -jc -f etc.tar.bz2 /etc > /dev/null 2>&1
[iyunv@baby-CentOS abc]# tar -Jc -f etc.tar.xz /etc > /dev/null 2>&1
[iyunv@baby-CentOS abc]# ll -h
total 23M
-rw-r--r-- 1 root root 8.3M Apr 26 09:31 etc.tar.bz2
-rw-r--r-- 1 root root 9.6M Apr 26 09:31 etc.tar.gz
-rw-r--r-- 1 root root 5.0M Apr 26 09:32 etc.tar.xz
.........
|
这里可见3种压缩方式在压缩比上的差异。
查看压缩包中的文件名
1
2
3
4
5
6
7
| [iyunv@baby-CentOS abc]# tar -tJ -f etc.tar.xz | head
etc/
etc/sysctl.conf
etc/rpm/
etc/rpm/macros.prelink
etc/rpm/macros.texlive
........
|
加上-v后可查看文件的详细属性
1
2
3
4
5
6
| [iyunv@baby-CentOS abc]# tar -tvJ -f etc.tar.xz | head
drwxr-xr-x root/root 0 2015-04-26 05:55 etc/
-rw-r--r-- root/root 1150 2013-11-23 05:20 etc/sysctl.conf
drwxr-xr-x root/root 0 2015-03-25 04:39 etc/rpm/
-rw-r--r-- root/root 297 2013-08-19 20:36 etc/rpm/macros.prelink
-rw-r--r-- root/root 173 2011-12-08 02:05 etc/rpm/macros.texlive
|
解压到指定的目录下
1
2
3
| [iyunv@baby-CentOS abc]# tar -xJ -f etc.tar.xz -C ./etc/
[iyunv@baby-CentOS abc]# ll -d etc
drwxr-xr-x. 127 root root 12288 Apr 26 09:39 etc
|
还有一种比较特殊的备份工具cpio,它可以备份任何文件,但是它需要依靠管道来获取需要备份的文件,通常和find配合使用。
cpio:
-o#将数据输出到文件和设备上(备份使用的选项)
-B#Blocks增加至5120bytes,默认是512bytes(这样可让专注速度加快)
-i#将数据从备份文件中提取(用于还原)
-d#自动新建目录
-u#自动将较新的文件覆盖
-t#配合-i查看备份文件内容
-v#显示详细过程
-c#以portable format方式存储
备份/etc目录下两天之内被改动过的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [iyunv@baby-CentOS abc]# find /etc/ -mtime -2 | cpio -ovcB > ./etc.cpio
/etc/
/etc/blkid
/etc/blkid/blkid.tab
/etc/mtab
/etc/gconf/gconf.xml.defaults
/etc/gconf/gconf.xml.mandatory
/etc/gconf/gconf.xml.system
/etc/resolv.conf
/etc/pki/nssdb
/etc/adjtime
1 block
[iyunv@baby-CentOS abc]# ll etc.cpio
-rw-r--r-- 1 root root 5120 Apr 26 10:01 etc.cpio
|
查看备份的文件,注意里面的文件名都是绝对路径的,若直接还原会覆盖原有文件。
1
2
3
4
5
6
| [iyunv@baby-CentOS abc]# cpio -ivct < etc.cpio
drwxr-xr-x 126 root root 0 Apr 26 05:55 /etc/
drwxr-xr-x 2 root root 0 Apr 25 14:57 /etc/blkid
-rw-r--r-- 1 root root 484 Apr 25 14:57 /etc/blkid/blkid.tab
-rw-r--r-- 1 root root 555 Apr 26 05:55 /etc/mtab
.......
|
用--no-absolute-filenames还原至当前目录下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| [iyunv@baby-CentOS etc]# cpio -ivcd --no-absolute-filenames < ../etc.cpio
cpio: Removing leading `/' from member names
etc
etc/blkid
etc/blkid/blkid.tab
etc/mtab
etc/gconf/gconf.xml.defaults
etc/gconf/gconf.xml.mandatory
etc/gconf/gconf.xml.system
etc/resolv.conf
etc/pki/nssdb
etc/adjtime
6 blocks
[iyunv@baby-CentOS etc]# ll etc
total 24
-rw-r--r-- 1 root root 44 Apr 26 10:09 adjtime
drwxr-xr-x 2 root root 4096 Apr 26 10:09 blkid
drwxr-xr-x 5 root root 4096 Apr 26 10:09 gconf
-rw-r--r-- 1 root root 555 Apr 26 10:09 mtab
drwxr-xr-x 3 root root 4096 Apr 26 10:09 pki
-rw-r--r-- 1 root root 79 Apr 26 10:09 resolv.conf
|
|