1.13. 2017-11-25-练习-压缩

1 、使用不同压缩工具对同一个文件进行压缩,并比较大小

[root@centos7 test]$ compress -c messages-20171113 > messages.Z
[root@centos7 test]$ ll
total 3684
-rw-------. 1 root root 1678853 Nov 28 09:42 messages-20171113
-rw-------. 1 root root 1678853 Nov 28 09:45 messages-20171113.bak
-rw-r--r--. 1 root root  411094 Nov 28 09:47 messages.Z
[root@centos7 test]$ gzip -c messages-20171113 > message.gz
[root@centos7 test]$ ll
total 3892
-rw-r--r--. 1 root root  212778 Nov 28 09:48 message.gz
-rw-------. 1 root root 1678853 Nov 28 09:42 messages-20171113
-rw-------. 1 root root 1678853 Nov 28 09:45 messages-20171113.bak
-rw-r--r--. 1 root root  411094 Nov 28 09:47 messages.Z
[root@centos7 test]$ xz -c messages-20171113 >messages.xz
[root@centos7 test]$ ll
total 4044
-rw-r--r--. 1 root root  212778 Nov 28 09:48 message.gz
-rw-------. 1 root root 1678853 Nov 28 09:42 messages-20171113
-rw-------. 1 root root 1678853 Nov 28 09:45 messages-20171113.bak
-rw-r--r--. 1 root root   76476 Nov 28 09:50 messages.xz
-rw-r--r--. 1 root root  411094 Nov 28 09:47 messages.Z
[root@centos7 test]$ ll -S
total 3968
-rw-------. 1 root root 1678853 Nov 28 09:42 messages-20171113
-rw-------. 1 root root 1678853 Nov 28 09:45 messages-20171113.bak
-rw-r--r--. 1 root root  411094 Nov 28 09:47 messages.Z
-rw-r--r--. 1 root root  212778 Nov 28 09:48 message.gz
-rw-r--r--. 1 root root   76476 Nov 28 09:50 messages.xz

[root@centos7 test]$ echo -e  "xz:$[1678853/76476]\ngz:$[1678853/212778]\nZ:$[1678853/411094]"
xz:21
gz:7
Z:4

Important

从上面的对比可以看出来, xz的压缩效果最好,其次gzip,最差的compress压缩。

2 、zip,unzip对/etc/sysconfig打包和压缩

[root@centos7 test]$ zip -r sysconfig.zip /etc/sysconfig
[root@centos7 test]$ unzip sysconfig.zip

3 、使用tar命令创建归档,并添加文件,查看文件列表,展开归档

[root@centos7 test]$ tar Jcvf sysconfig.tar.xz  /etc/sysconfig/
[root@centos7 test]$ ll
total 900
-rw-r--r--. 1 root root 919508 Nov 28 10:13 sysconfig.tar.xz
[root@centos7 test]$ tar tvf sysconfig.tar.xz
root@centos7 test]$ tar -rf sysconfig.tar.xz /root/access_log
tar: Cannot update compressed archives
tar: Error is not recoverable: exiting now
[root@centos7 test]$ tar xf sysconfig.tar.xz  -C /usr/src
[root@centos7 test]$ ll /usr/src
total 12
drwxr-xr-x. 2 root root 4096 Nov  5  2016 debug
drwxr-xr-x. 3 root root 4096 Nov 28 10:19 etc
drwxr-xr-x. 3 root root 4096 Nov 23 10:06 kernels

tar 命令配合压缩选项:

-J

xz

-j

bz

-z

gzip

4 、split分割一个tar文件,并合并这些文件

[root@centos7 test]$ split -d -b 50k sysconfig.tar.xz  myconfig
[root@centos7 test]$ ll myconfig*
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig00
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig01
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig02
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig03
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig04
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig05
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig06
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig07
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig08
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig09
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig10
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig11
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig12
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig13
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig14
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig15
-rw-r--r--. 1 root root 51200 Nov 28 10:21 myconfig16
-rw-r--r--. 1 root root 49108 Nov 28 10:21 myconfig17
[root@centos7 test]$ cat myconfig* >> myconfig.tar.xz

5 、cpio 进行打包并还原

[root@centos7 test]$ find /etc/sysconfig -print  |cpio -ovc >sysconfig.cpio
[root@centos7 test]$ cpio -tv < sysconfig.cpio
[root@centos7 test]$ cpio -idv < sysconfig.cpio

6 、测试压缩并解压对文件权限的影响

[root@centos7 test]$ touch general.txt
[root@centos7 test]$ touch acl.txt
[root@centos7 test]$ setfacl -m "u:zhaojiedi:rwx" acl.txt
[root@centos7 test]$ ll
total 4
-rw-rwxr--+ 1 root root 0 Nov 28 10:33 acl.txt
-rw-r--r--. 1 root root 0 Nov 28 10:33 general.txt
[root@centos7 test]$ mkdir bakdir
[root@centos7 test]$ xz -c acl.txt  > bakdir/acl.txt.xz
[root@centos7 test]$ gzip -c general.txt  > bakdir/general.txt.gz
[root@centos7 test]$ cd bakdir
[root@centos7 bakdir]$ ll
total 8
-rw-r--r--. 1 root root 32 Nov 28 10:35 acl.txt.xz
-rw-r--r--. 1 root root 32 Nov 28 10:38 general.txt.gz
[root@centos7 bakdir]$ xz -d acl.txt.xz
[root@centos7 bakdir]$ gzip -d general.txt.gz
[root@centos7 bakdir]$ ll . ; ll ../
total 0
-rw-r--r--. 1 root root 0 Nov 28 10:35 acl.txt
-rw-r--r--. 1 root root 0 Nov 28 10:38 general.txt
total 8
-rw-rwxr--+ 1 root root    0 Nov 28 10:33 acl.txt
drwxr-xr-x. 2 root root 4096 Nov 28 10:38 bakdir
-rw-r--r--. 1 root root    0 Nov 28 10:33 general.txt

Warning

经过测试我们发现,普通的权限还是能保留的,acl权限会在压缩和解压过程中丢失的。

7 、测试tar打包保留权限的问题

[root@centos7 test]$ ll
total 4
-rw-rwxr--+ 1 root root 0 Nov 28 10:33 acl.txt
-rw-r--r--. 1 root root 0 Nov 28 10:33 general.txt
[root@centos7 test]$ tar Jcvf /root/test.tar.xz /app/test
tar: Removing leading '/' from member names
/app/test/
/app/test/general.txt
/app/test/acl.txt
[root@centos7 test]$ tar --acl -Jcvf /root/test.tar.xz /app/test
tar: Removing leading '/' from member names
/app/test/
/app/test/general.txt
/app/test/acl.txt
[root@centos7 test]$ cd /root
[root@centos7 ~]$ tar xvf test.tar.xz
app/test/
app/test/general.txt
app/test/acl.txt
[root@centos7 ~]$ ll /app/test
total 4
-rw-rwxr--+ 1 root root 0 Nov 28 10:33 acl.txt
-rw-r--r--. 1 root root 0 Nov 28 10:33 general.txt

Important

经过测试我们发现使用”–acl”选项打包的时候可以保留acl权限。其实还有”–xattrs,–selinux”保留选项的