Linux基础知识之压缩命令

简介:

   在现代计算机体系中,任何操作都是建立在对数据的处理上,所以存储是一个十分重要的组成部分。但是不管技术发展成什么样,存储总是会有上限,尤其是对于我们这些普通用户来说,我们是不可能在每一次缺少存储空间的时候就进行扩容。

   随着计算机系统的发展,人们开发出了压缩这个东西。那么压缩是什么呢?简单来说,就是对一些有规律的数据进行规律化处理,来使其占用的空间变少。比如有一个文本文件,其内部内容是十个字母“a”,十个字母“b”,十个字母“c”,然后又是十个字母“a”...,就这样重复了100遍,那么此时的文本文件的长度就是“(10+10+10)*100=3000”个字符,此时,如果我们使用最简单的压缩算法,使用一个变量“x”来代替10个“a”,使用变量“y”来代替10个“b”,使用变量“z”来代替10个“c”,在写入文本的时候就可以这么写:先写x、y、z分别代表的含义,然后再重复x、y、z这三个变量100遍,此时就能够生成一个大小为“10+10+10+3*100=330”个字符的文件,当然这个大小是一个近似值。此时我们可以看到相对于原先的“3000”个字符,现在的“330”个字符缩小了近10倍。这就叫压缩过程,产生的文件叫做压缩文件,原先的文件叫做源文件,源文件和压缩文件的大小的比值叫做压缩比。

   在这里我举的例子只是一个最简单的压缩过程,而且这个情况也很少出现,但是不管什么文件都能够找出类似的这种规律,所以相对来说纯文本文件的压缩比较大,而像视频和图像这种规律很难找的文件压缩比较小。要实现对文件的压缩,仅仅靠知道原理是远远不够的,所以这就需要用到别人已经写好的算法来实现压缩这个功能。在Linux系统中几种能够实现压缩功能的工具如下所示:


压缩工具:compress,相对的解压缩工具:uncompress,压缩后产生的文件的扩展名后缀:.Z

压缩工具:gzip,相对的解压缩工具:gunzip,压缩后产生的文件的扩展名后缀:.gz

压缩工具:bzip2,相对的解压缩工具:bunzip2,压缩后产生的文件的扩展名后缀:.bz2

压缩工具:xz,相对的解压缩工具:unxz,压缩后产生的文件的扩展名后缀:.xz

压缩工具:zip,相对的解压缩工具:unzip,压缩后产生的文件的扩展名后缀:.zip

其中压缩工具:xz是目前压缩比最高的工具


下面对以上提到的压缩工具进行详细的讲解:

 在往下看之前,我们可以通过“dd”命令来创建一个大小为“30M”的文本文件:

1
2
3
4
5
6
7
8
[root@localhost  gzip ] # dd if=/dev/zero of=test bs=30M count=1
记录了1+0 的读入
记录了1+0 的写出
31457280字节(31 MB)已复制,0.0490481 秒,641 MB/秒
[root@localhost  gzip ] # ls -hl
总用量 30M
-rw-r--r--. 1 root root 30M 6月   7 16:45  test
[root@localhost  gzip ] #


然后使用cp命令做出三个相同内容,不同名称的文件:

1
2
3
4
5
6
[root@localhost 20170607yasuo] # ls -hl
总用量 90M
-rw-r--r--. 1 root root 30M 6月   7 16:52 testbzip
-rw-r--r--. 1 root root 30M 6月   7 16:51 testgzip
-rw-r--r--. 1 root root 30M 6月   7 16:52 testxz
[root@localhost 20170607yasuo] #


   有了这三个文件,就可以分别使用以下命令进行压缩(compress是一个相当古老的 unix 档案压缩指令,所以这里不再介绍):


gzip:

gzip, gunzip, zcat - compress or expand files

常用选项:

-d:解压缩(同gunzip)

-#:以指定的压缩比进行压缩,1-9,9为最高级;默认6

-c:将压缩结果输出到标准输出,不会对原文件进行压缩;

gzip -c /PATH/TO/FILE > /PATH/TO/COMPRESS_FILE.gz


举例:

1
2
3
4
5
6
7
[root@localhost 20170607yasuo] # gzip testgzip 
[root@localhost 20170607yasuo] # ls -hl
总用量 61M
-rw-r--r--. 1 root root 30M 6月   7 16:52 testbzip
-rw-r--r--. 1 root root 30K 6月   7 16:51 testgzip.gz
-rw-r--r--. 1 root root 30M 6月   7 16:52 testxz
[root@localhost 20170607yasuo] #

在这个例子中,我们可以看到原来的“testgzip”文件占用30M的大小,现在只占30K的大小


注意:在进行压缩的时候,如果不对命令进行特殊的指定,则会删除源文件,如果想留下源文件则需要使用“-c”选项


bzip2:

bzip2, bunzip2 - a block-sorting file compressor, v1.0.4

  bzcat - decompresses files to stdout

  常用选项:

   -d:解压缩(同bunzip2)

   -#:指定压缩比进行压缩,1-9,默认为6

   -k:保留原文件不删除,创建新的压缩文件;


  举例:

1
2
3
4
5
6
7
[root@localhost 20170607yasuo] # bzip2 testbzip 
[root@localhost 20170607yasuo] # ls -hl
总用量 31M
-rw-r--r--. 1 root root  50 6月   7 16:52 testbzip.bz2
-rw-r--r--. 1 root root 30K 6月   7 16:51 testgzip.gz
-rw-r--r--. 1 root root 30M 6月   7 16:52 testxz
[root@localhost 20170607yasuo] #


xz:

xz, unxz, xzcat - Compress or decompress .xz files

常用选项:

-d:解压缩(同unxz)

   -#:指定压缩比进行压缩,1-9,默认为6

   -k:保留原文件不删除,创建新的压缩文件;


  举例:

1
2
3
4
5
6
7
[root@localhost 20170607yasuo] # xz testxz 
[root@localhost 20170607yasuo] # ls -hl
总用量 44K
-rw-r--r--. 1 root root   50 6月   7 16:52 testbzip.bz2
-rw-r--r--. 1 root root  30K 6月   7 16:51 testgzip.gz
-rw-r--r--. 1 root root 4.7K 6月   7 16:52 testxz.xz
[root@localhost 20170607yasuo] #



   比较上面的三种压缩后的文件大小,可以发现“xz”这个命令的压缩比最大,但是消耗时间也最长,所以在日常使用中,我们要根据自己的需要来选择适合的压缩命令











本文转自正经的青年51CTO博客,原文链接:http://blog.51cto.com/11142243/1933193 ,如需转载请自行联系原作者



相关文章
|
10天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
92 6
|
11天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
47 3
|
11天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
36 2
|
19天前
|
缓存 监控 Linux
|
22天前
|
Linux Shell 数据安全/隐私保护
|
23天前
|
域名解析 网络协议 安全
|
6天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
33 3
|
29天前
|
运维 监控 网络协议
|
30天前
|
监控 Linux Shell
|
11天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
43 3
下一篇
无影云桌面