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压缩后的文件的内容
[root@baby-CentOS abc]# gzip -c /etc/passwd > ./passwd [root@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、xz(后缀名.xz)
-d #解压缩(unxz)
-k #保留原文件
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目录
[root@baby-CentOS abc]# tar -zc -f etc.tar.gz /etc > /dev/null 2>&1 [root@baby-CentOS abc]# tar -jc -f etc.tar.bz2 /etc > /dev/null 2>&1 [root@baby-CentOS abc]# tar -Jc -f etc.tar.xz /etc > /dev/null 2>&1 [root@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种压缩方式在压缩比上的差异。
查看压缩包中的文件名
[root@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后可查看文件的详细属性
[root@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
解压到指定的目录下
[root@baby-CentOS abc]# tar -xJ -f etc.tar.xz -C ./etc/ [root@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目录下两天之内被改动过的文件
[root@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 [root@baby-CentOS abc]# ll etc.cpio -rw-r--r-- 1 root root 5120 Apr 26 10:01 etc.cpio
查看备份的文件,注意里面的文件名都是绝对路径的,若直接还原会覆盖原有文件。
[root@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还原至当前目录下
[root@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 [root@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
转载于:https://blog.51cto.com/ljbaby/1638454