其他
文件打包与压缩(1)-常见的压缩命令
为什么需要压缩
打包和压缩的目的就是方便传输和保存。打包相当于把文件放到一个背包里,压缩相当于把背包的体积挤压的更小。
常见的压缩命令
在看压缩命令之前,我们先看看生产中常见的压缩文件的格式。
*.gz gzip 程序压缩的文件;
*.bz2 bzip2 程序压缩的文件;
*.xz xz程序压缩的文件
*.tar tar程序打包的数据,并没有压缩过;
*.tar.gz tar程序打包的文件,并且经过gzip的压缩
*.tar.bz2 tar程序打包的文件,并且经过bzip2的压缩
*.tar.xz tar程序打包的文件,并且经过xz的压缩
gzip
gzip [-cdtv] [-num] 被压缩的文件的文件名
选项与参数:
-d :解压缩;
-v :可以显示出原文件/压缩文件的压缩比信息;
-num :压缩等级,num为1 最快,但是压缩比最差、num为9 最慢,但是压缩比最好!默认是6
我们通过实例看一下:
# 准备需要压缩的文件
[root@studyclub ~]# ls -lSrh /usr/lib/systemd/ # 请自行回顾这个命令及这几个参数的作用
[root@studyclub ~]# cp /usr/lib/systemd/systemd jason/
# 使用gzip命令压缩拷贝出来的systemd文件
[root@studyclub ~]# cd jason/
[root@studyclub jason]# gzip -v systemd # 显示被压缩的文件和压缩比
systemd: 58.1% -- replaced with systemd.gz
[root@studyclub jason]# gzip -d systemd.gz # 解压压缩文件
bzip2
bzip2 [-cdkzv] [-num] 文件名
选项与参数:
-d :解压缩
-k :保留原始文件,而不会删除原始的文件
-v :可以显示出原文件/压缩文件的压缩比信息;
-num :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
我们通过实例看一下:
# 压缩services但保留原文件
[root@studyclub jason]# bzip2 -k services
[root@studyclub jason]# ls
services services.bz2
# 显示压缩比等信息
[root@studyclub jason]# bzip2 -vk services
services: 5.409:1, 1.479 bits/byte, 81.51% saved, 670293 in, 123932 out.
# 解压缩
[root@studyclub jason]# bzip2 -d services.bz2
bzip2: Output file services already exists. # 由于压缩的时候加了-k选项,所以原来的文件还存在
xz
xz [-dtkv] [-num] 文件名
选项与参数:
-d :解压缩
-t :可以用来检验一个压缩文件的完整性,看看文件有无错误;
-k :保留原文件不删除
-v :可以显示出原文件/压缩文件的压缩比信息;
-num 压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
我们通过实例看一下:
# 显示压缩信息,压缩后不删除原文件
[root@studyclub jason]# xz -kv services
services (1/1)
100 % 97.3 KiB / 654.6 KiB = 0.149
gzip、bzip2、xz压缩效率对比
在对比压缩效率之前,我们先介绍一个time命令。
time命令用来查看命令的执行消耗的时长以及系统的资源使用情况。
time [options] COMMAND [arguments]
选项和参数:
-o 后接文件名,用来保存time的输出结果。
-a 配合-o选项,把time执行的输出结果追加到文件结尾,而不是覆盖已有的文件
我们来看看time的用法:
[root@studyclub ~]# time ls
anaconda-ks.cfg args.sh link-job nginx-1.18.0.tar.gz wofile # ls的结果
real 0m0.001s # 从本行开始,是time的输出信息
user 0m0.000s
sys 0m0.001s
real:从ls开始执行到ls执行结束耗费的CPU时间。包括ls进程的阻塞时间(等待完成io等)+其他进程抢占ls进程后耗费的时间+ls进程自身执行需要的时间。
user:ls执行用户态代码耗费的CPU时间。这个时间只是指ls进程执行用户态代码实际耗费的时间,不包括阻塞的时间和被抢占的时间。
sys:ls执行内核态任务耗费的CPU时间。
注意:real并不一定是user和sys的和,我们以后再讲。
# gzip压缩
[root@studyclub jason]# time gzip systemd
real 0m0.097s
user 0m0.095s
sys 0m0.001s
[root@studyclub jason]# ll -h # 查看压缩后的大小
-rwxr-xr-x 1 root root 663K Jun 10 10:03 systemd.gz
[root@studyclub jason]# gzip -d systemd.gz # 把环境还原
# bzip2压缩
[root@studyclub jason]# time bzip2 systemd
real 0m0.136s
user 0m0.117s
sys 0m0.018s
[root@studyclub jason]# ll -h # 查看压缩后的大小
-rwxr-xr-x 1 root root 626K Jun 10 10:03 systemd.bz2
[root@studyclub jason]# bzip2 -d systemd.bz2 # 把环境还原
# xz压缩
[root@studyclub jason]# time xz systemd
real 0m0.611s
user 0m0.567s
sys 0m0.041s
[root@studyclub jason]# ll -h # 查看压缩后的大小
-rwxr-xr-x 1 root root 542K Jun 10 10:03 systemd.xz
[root@studyclub jason]# xz -d systemd.xz # 把环境还原
在压缩效率上:gzip > bzip2 > xz
在压缩比例上:gzip < bzip2 < xz
新手应知: 尝鲜Rocky Linux
《Linux基础及进阶》: 031 - Linux账号管理(3)-用户组配置文件 032 - Linux账号管理(4)-useradd/usermod/passwd 033 - Linux账号管理(5)-userdel、id、groupadd、groupmod、groupdel 034 - Linux账号管理(6)-身份确认及用户登录信息 035 - Linux账号管理(7)-身份切换su、sudo
看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·