linux zip压缩比1000,linux下压缩工具总结与使用(参考私房菜)

1 压缩

gzip命令

options:

-c  数据流重定向,可以定位为文件

-r  递归压缩,即深入子目录

-v  显示姓名和压缩比等冗余信息

-d  解压缩

-#  加上的数字表示压缩等级,越高表示压缩比越高,但更慢

①做了一个很简单的实验[root@mail tmp]# ll -h

total 128K

-rw-r--r--. 1 root root 128K Jun 27 03:00 test

[root@mail tmp]# gzip -v -9 test

test: 99.9% -- replaced with test.gz

[root@mail tmp]# ll -h

total 4.0K

-rw-r--r--. 1 root root 166 Jun 27 03:00 test.gz

[root@mail tmp]# gzip -d test.gz

[root@mail tmp]# gzip -v -1 test

test: 99.6% -- replaced with test.gz

②如何保留原文件?

一种方案我觉得很好用,上面的-c命令[root@mail tmp]# gzip -c test > test.gz

[root@mail tmp]# ll

total 132

-rw-r--r--. 1 root root 131072 Jun 27 03:00 test

-rw-r--r--. 1 root root    166 Jun 27 03:03 test.gz

④利用zcat可以直接读压缩文件,前提是cat可以读取原文件,所以叫zcat ==[root@mail tmp]# zcat test1.sh.gz

this is a test.

bzip2命令

据说比zip有更好的压缩比,命令行使用,建议使用差不多的子选项

做了个简单小实验[root@mail tmp]# gzip -9 -v -c test >test.gz

test: 99.9%

[root@mail tmp]# bzip2 -9 -v -c test >test.bz2

test:    2978.909:1,  0.003 bits/byte, 99.97% saved, 131072 in, 44 out.

果不其然,其他用法相似,不建议继续尝试了

bzcat也一样[root@mail tmp]# bzcat test1.sh.bz2

this is a test.

下面看看如何打包和压缩解压缩包吧

tar命令

网上有一段讲的很好,这里摘下来

参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对喔!-p :使用原文件的原来属性(属性不会依据使用者而变)-P :可以使用绝对路径来压缩!这样对配置文件很方便,一般备份/etc最好使用-p

-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!--exclude FILE:在压缩的过程中,不要将 FILE 打包!

-C 目录   指定解压的目录

基本上常用的都已经说明

注意如下几点

1 tar实用的时候考虑,一般当然是压缩的,那么考虑是用zip还是bzip,zip就使用z,bzip用j,解压同理

2 -f后面接文件,所以f紧接着要创建的压缩文件的,最后接上要压缩的源文件

下面继续做咱的小实验

①打包tmp的除了test的所有文件到/root/backup/目录下,使用bzip2压缩[root@mail tmp]# tar -jcvf /root/backup/tmp.bz2  /tmp --exclude test

tar: Removing leading `/' from member names

/tmp/

/tmp/test.bz2

/tmp/test.gz

/tmp/test1.sh.bz2

②此时要求保留文件属性,把/etc/my.cnf压缩至/root/backup/目录下,名称问my.bak[root@mail tmp]# tar -jcvpf /root/backup/my.bak /etc/my.cnf

tar: Removing leading `/' from member names

/etc/my.cnf

③在root家目录下,把晚于2015年7月11日的文件备份,命名为2015.7.11.bak[root@mail ~]# tar -jcvp -f /root/backup/2015.7.11.bak  /root -N 20150711

④在③压缩文件中添加一个文件/tmp/test,并查看[root@mail ~]# tar -rf  /root/backup/2015.7.11.bak.tar  /tmp/test

tar: Cannot update compressed archives

tar: Error is not recoverable: exiting now

追加了半天,发现这个错误,才意识到,是我已经压缩了才这样,所以最好的办法是重新压缩,当然对于一个tar包添加再压缩也可以[root@mail ~]# tar -jcvpf  /root/backup/2015.7.11.bak  /tmp/test  /root -N 20150711

[root@mail ~]# tar -tvf /root/backup/2015.7.11.bak

或者这样[root@mail ~]# tar -cf /root/backup/2015.7.11.bak /root

[root@mail ~]# tar -rvf /root/backup/2015.7.11.bak /tmp/test

tar: Removing leading `/' from member names

/tmp/test

[root@mail ~]# tar -tvf /root/backup/2015.7.11.bak

...

-rw-r--r-- root/root    131072 2015-06-27 04:27 tmp/test

总之,其他的还是自己以后慢慢使用吧,当然,前面也可以不适用-,如tar xf,这是另一种风格,巨日我也忘了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值