当前位置: 首页> 科技> IT业 > 域名管理系统_承德市信息查询平台_网店推广运营策略_营销管理

域名管理系统_承德市信息查询平台_网店推广运营策略_营销管理

时间:2025/7/12 2:51:19来源:https://blog.csdn.net/U2396573637/article/details/144205155 浏览次数:0次
域名管理系统_承德市信息查询平台_网店推广运营策略_营销管理

一、前言

为了使传输的文件大小尽可能地小,我们采用压缩的方式生成压缩文件,然后将压缩包传输过去就可以了。衡量压缩方法地好坏主要有两点综合考量:一是压缩速度,二是压缩程度。很好理解,压缩一个文件,我当然不能一直等他压缩吧,不然还赶不上直接传输呢。另外,压缩程度不够的话,文件还是那么大,这跟我们的诉求不一样啊,我们就是为了尽可能地小,它压缩一下就压缩了百分之一,这还不如不压缩,毫无意义。

不知道大家学过数据结构中地哈夫曼树吗,哈夫曼编码就是一种压缩算法。我们本节要将地zip和gzip都使用了哈夫曼编码作为其压缩算法中的一部分。bzip2和rar也与哈夫曼编码有一定的关系:

zip:使用DEFLATE算法,而DEFLATE算法是基于LZ77算法和哈夫曼编码的组合

gzip:同样使用DEFLATE算法

bzip2:使用的是Burrows-Wheller变换和移动块排序算法,最后结合哈夫曼编码,但不是直接用哈夫曼编码进行压缩的。

rar:使用了多种压缩算法:主要是LZSS,结合哈夫曼编码、移动块排序等,新版本(如RAR 5.0)还引入了多线程压缩,利用现代多核处理器提高压缩速率和效率。


好了,言归正传,我们本次就来说一说linux下常用的gzip、bzip2以及不太常用的zip、rar。

二、gzip与bzip2

先来看一下该文件下有什么文件:

此时如果我们使用gzip命令对a.txt进行压缩,让我们看一下结果:

问题一:这与我们使用windows的压缩不一样啊,使用windows时,我们压缩后,会生成新的压缩文件夹,并没有覆盖原来的压缩文件。

暂时解压一下文件:

然后使用gzip命令,压缩两个文件:

问题二:尝试压缩多个文件时,同样分别对源文件直接压缩,并没有生成新的压缩文件夹,也没有将两个文件归为一个文件。

所以单纯的gzip和gunzip并不能帮我们解决日常的需求。bzip2命令同样如此。所以需要结合linux下的打包指令tar

tar:将一些文件打包成一份新的文件夹,通常使用tar做后缀名。语法:

#打包:
tar -cvf 打包后的文件名 待打包资料列表
#解包:
tar -xvf 打包文件

参数解释:

-c:打包  -x:解包 

-v:显示打包进度条

-f:必须放在最后紧挨着打包的文件名。

下面给个示例:将a.txt.gz和b.c.gz给打包成一个文件gzfile.tar: 

我们可以看到,虽然将两个文件打包了,但是并没有将原来的文件覆盖,而且支持同时操作多个文件合并。

这时候我们将a.txt.gz和b.c.gz删除,来看一下解包后,是否会解包为两个文件:

我们可以看到,解包为了两个文件,并且打包文件并灭有消失。这非常符合我们的预期,但是,通过ls -lh我们看到,打包后的文件远远大于源文件的两个大小,源文件为两个压缩文件,总共才50B,打包后的文件反而成了10K的大小。所以就需要将tar与gzip等指令进行配合使用:

使用gzip对打包文件gzfile.tar进行压缩,然后大小从10K减小到了190B。此时我们就又遇到了两个问题:

问题一:每次压缩文件都写两个命令,太麻烦了,我想一蹴而就,有办法:

以解压命令为例:在选项中加入-z选项,就会自动在执行完打包命令后执行gzip命令,如果配合-c,那就是压缩,如果配合-x那就是解压缩。

对于bzip2命令的使用方法同样如上:只不过选项不是-z,而是-j,来看一下:

问题二:为什么压缩后的文件还是比原文件加起来还要大,这还压缩什么?

这是因为有几个原因会造成这样的情况,并非所有时候都是这样的。

  1. 文件类型:某些类型的文件(如已经压缩过的文件,比如 JPEG 图片、MP3 音乐等)在二次压缩时,可能会导致比原文件更大的输出文件。因为压缩算法在这些文件上没有更多的可压缩数据可利用。

  2. 压缩级别tar 命令的压缩只是在一定程度上进行的,具体压缩程度取决于使用的压缩算法。如果你使用 -z 选项,它会调用 gzip ,该算法的默认压缩力度并不是最高的。如果需要更高的压缩率,可以考虑使用其他工具(如 xz 或 bzip2)并调整压缩参数。

  3. 元数据和结构开销:压缩包内包含了文件的元数据(如文件权限、时间戳等),这在某些情况下可能显著增加文件大小。

  4. 空文件和小文件:如果你压缩的原文件中包含很多空文件或特别小的文件,这些在打包后可能占用的总空间反而比压缩前要大。

观察上面三个原因,我们可能违反了三条:1、文件类型为已经压缩过的文件,3、元数据开销(通常相对大文件而言,可以忽略不计这点大小。除非违反了第四条)4、空文件或小文件(由于文件太小,我还要额外保存文件的相关信息,额外有了空间开销)。

三、zip命令

语法:

zip [选项] zipfile files

【-r】递归压缩文件夹及其内容

【-e】加密压缩文件

【-9】使用最大压缩级别

使用示例:

zip archive.zip file1.txt #压缩单个文件
zip archive.zip file1.txt file2.txt #压缩多个文件
zip -r archive.zip folder_name #压缩整个文件夹
zip -e archive.zip file1.txt #加密压缩文件
zip -9 archive.zip file1.txt #使用最大级别压缩文件
unzip [选项] zipfile

【-d】指定解压目录

【-l】列出压缩包内的文件、不压缩

【-o】覆盖已存在的文件

使用示例:

unzip archive.zip #解压缩指定文件
unzip archive.zip -d /path/to/destination/ #解压缩文件到指定目录
unzip -l archive.zip #查看压缩包内的文件列表
unzip -o archive.zip #解压完如果路径下存在包内文件将覆盖已存在文件

如果系统中没有安装这两个命令,可以使用:

sudo apt update  
sudo apt install zip unzip

四、rar命令

首先,安装rar以及unrar两个工具:

sudo apt update  
sudo apt install rar unrar

压缩:

rar a <压缩文件名>.rar <要压缩的文件或目录>
rar a my_archive.rar my_folder #例如压缩一个名为my_folder的目录
rar a -v10m my_archive.part rar my_folder #-v 创建10M大的分卷,压缩文件
rar a -m5 my_archive.rar my_folder #-m 设置压缩级别从0-5
rar a -r my_archive.rar my_folder #-r 递归地压缩子目录和文件

解压:

unrar x <压缩文件名>.rar
unrar x my_archive.rar #例如解压一个名为my_archive.rar的压缩文件
unrar x my_archive.rar <目标目录> #解压到指定目录
unrar l my_archive.rar #l 查看压缩文件内容
unrar e my_archive.rar <文件名> #e 仅提取特定文件

感谢大家!

关键字:域名管理系统_承德市信息查询平台_网店推广运营策略_营销管理

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: