压缩包学习笔记
关于压缩包
压缩包的正式名称是归档文件,也叫压缩文件。压缩文件分为有损压缩和无损压缩。
有损压缩通过抛弃部分不需要的数据,来实现减小文件大小的功能,也就是说,作为用户,必须接受压缩程序对原始文件的重新解释。最有代表性的就是 MP3 文件。简单来说,MP3 通过滤过人耳无法捕捉到的声音(也就是利用人耳听觉系统的遮蔽效应特性),来达到压缩音频大小的效果。
无损压缩算法通过消除数据中的冗余和重复部分来压缩数据,同时保持数据的完整性和准确性。举个例子,这是一段无序的字符:
ppppsdwwwwqq
我们可以换一种书写方式,用数字代表这个字符出现的次数,省略1
,所以就能得到:
4psd4w2q
这样,原长为 12 的字符串就被减少到了 8。当然,实际上的压缩算法比这更先进,也比使用有损压缩更复杂,而此时的压缩包已经是另一种文件格式了,如果想使用其中的数据,首先得用压缩软件把数据还原,这个过程称作解压缩。
我想写的主要是诸如 .zip 之类的压缩文件,因此下面就不多写有损压缩的东西了。

1 | tar -a -c -f a.zip "E:\Test\示例.txt" |
这会把 E:\Test\示例.txt
压缩为 a.zip
并存储到当前目录。 tar 主要是用来打包文件的,把多个文件或目录合并成一个文件,方便备份或传输。相当于一个封装好的文件夹。但 tar 本身不压缩,压缩的话通常要配合 gzip、bzip2 或者 xz 这些工具,比如用 -z 参数调用 gzip ,生成 .tar.gz 文件,或者用 -j 参数调用 bzip2 生成 .tar.bz2 文件。
由于我一直在用 Bandizip 作为主力压缩软件,下面涉及的操作也大多通过 Bandizip 进行。文末提供一个下载源,这是官网→
压缩包格式
下面列出一些常见的压缩包格式。来自:维基百科-压缩文件格式列表
文件后缀 | 用途/应用 |
---|---|
.zip | 使用 ZIP 压缩算法的压缩包格式。这是跨平台通用的压缩格式。可以使用 zip 命令创建和解压缩 ZIP 压缩包。 |
.rar | 使用 RAR 压缩算法的压缩包格式。这是 Windows 平台上常用的一种压缩格式。可以使用 WinRAR 或 7-Zip 等软件来创建和解压缩 RAR 压缩包。 |
.tar.gz / .tgz | 先使用 tar 命令打包,然后再使用 gzip 算法压缩的格式。这是 Linux/Unix 上常用的压缩包格式。可以使用 tar 命令来创建和解压缩。在 Linux/Unix 以外的系统不常见。 |
tar.bz2 | 与 tar.gz 类似,tar.bz2 格式先将文件打包,然后使用 bzip2 算法进行压缩。它也是 Linux 和 Unix 系统中常用的格式,通常提供比 gzip 更高的压缩率。 |
.7z | 7Z 是一种具有高压缩率的格式,由 7-Zip 压缩软件使用。7Z 格式的支持软件相对较少,但它因其出色的压缩效率而受到青睐。7-Zip 软件可以用来创建和解压 7Z 文件。缺点是,一旦 7Z 文件受到哪怕极其微小的损坏,也可能使它包含的文件无法再取出。 |
gz & bz2 | 这两种格式通常用于压缩单个文件,而不是整个文件夹。gzip 和 bzip2 命令可以分别用来创建和解压这两种格式的压缩文件。 |
当然,还有诸如 ISO 等的压缩格式,但是因为都没有上述 6 个常用,故不在此提出。
如果你是 Linux 或者 Unix 用户,你一定全部见过了。所以下面会说一些后缀没那么常见的压缩包。
稀有压缩包后缀
比如 EXE,这样的压缩包可以直接双击解压缩(仅限 Windows),比如:
值得注意的是,如果你是 Bandizip 用户,这样的 EXE 文件并不会被 Windows 自动识别成窗口 icon,而是会变成 Bandizip 样式的 “EXE”。如图所示:
双击打开后 Bandizip 会自动提示将要被解压到的目录,选择好并按下“开始”就执行解压任务了。
然而事实上,你可以直接把 .exe 改为 .zip 再进行解压(因为文件后缀名只是用于标记这个文件如何存储数据,后缀名跟里面的数据没有直接联系);但是相反,一个打包好的 ZIP 压缩包不能改后缀为 .exe。
压缩包特殊操作
上面说到,压缩包并不能被直接读取,需要解压缩,解压缩是压缩的逆操作。因此,在这两个步骤中可以加入一些特殊操作,以防止无关人等能读到自己的压缩包。很多资源站都会利用这些方式来防爆(防止资源被删)。
添加密码
压缩操作中,可使用添加密码
的操作来让人无法直接读取,比如:
不建议使用这种密码,因为实在是太简单太容易破解了。同时,EXE 后缀的压缩包无法添加密码。
分卷压缩
在压缩页面,如果选用分卷压缩(仅支持 ZIP / ZIPX / 7Z / RAR / EXE / ACE / BZ2 / GZ,TAR 本身并不压缩,故不列入。数据来源:Bandizip。其实不能分卷的压缩格式大多数人一辈子也用不到),它会询问你每个卷应该多大,而不是多少卷,不过你可以靠自定义每一卷的大小来实现分割为特定卷数。
分卷压缩时每一卷都会恰好地分成所选的大小,比如,选择 25 MB,以 ZIP 格式为例:
容易发现每一个卷都是严格的 25,600,000 字节。
ZIP 分卷的显著特征是后缀名为 .z01, .z02, .z03, ..., .zip
。同样的,其他压缩后缀都有特定的分卷命名方式。
以下是常见压缩格式的分卷压缩后缀名示例,整理成表格供参考:
压缩类型 | 分卷后缀示例 | 说明 |
---|---|---|
.tar + split |
.part00 , .part01 |
使用 split 分割的 .tar 归档,默认生成 x00 , x01 ,可自定义前缀(如 archive_part_00 )。 |
.tar.gz |
.tar.gz.001 , .tar.gz.002 |
分卷压缩时可能直接使用连续数字后缀(如结合 split 或自定义脚本)。 |
.zip |
.zip , .z01 , .z02 |
使用 zip -s 分卷时,主文件为 .zip ,后续分卷为 .z01 , .z02 等。 |
.7z |
.7z.001 , .7z.002 |
7-Zip 分卷压缩时默认使用 .001 , .002 后缀。 |
.rar |
.part1.rar , .part2.rar |
WinRAR 分卷压缩默认生成 .part1.rar , .part2.rar 。 |
通用数字后缀 | .001 , .002 |
通用分卷命名方式(如 split -d 生成的 00 , 01 或手动命名)。 |
解压缩时每个分卷必须在同一个文件夹里,全部卷的文件名必须一样,缺一不可。
一些小技巧……
一些资源站,由于一些原因,需要加密文件,但又需要保证用户能够尽可能不受阻地获得文件,这时候,压缩密码和分卷压缩就派上用场了,且它们可以同时使用。
最典型的代表就是 Tearemix 提供的南方公园动画。原文是这样写的:
第一季打包:
为了防爆,夸克网盘分两个链接,先把两个链接里的文件下载到同一个文件夹,然后把 S01.zip 文件名改成 S01.7z.004 ,再解压两次即可。解压密码:sp1997
夸克网盘A部分 夸克网盘B部分
同时,针对一些限制文件大小的网盘(例如蓝奏云),也可以使用分卷压缩的方法存储大文件。缺点是,下载时会很麻烦。
例如:这有一个 200 MB 左右的文件,如果希望上传蓝奏云那看起来充值不可避免,这时候就要利用分卷。又因为蓝奏云限制文件后缀名,还需要手动修改后缀,并建议标记好卷数。
这是一个测试链接,看看你能不能解压成功 https://karlbaey.lanzoum.com/b00uz2k6rc 密码:WW2。
结语
压缩……也没什么特别的吧,就是看到现在的赛博文盲太多,解压都解不利索,突然就想学一些压缩包的知识。不过也好,现在学会了挺多实用技巧,不用再被人骂赛博文盲了(喜)。
(The end)
1.【清明节特刊】乐评:碎月群岛BrokenMoon Islands
2.RSS 入门教程
3.我终于有自己的域名啦!
4.Markdown编辑器推荐
5.Markdown 语法速查
6.不会再有的地方//Lieu Évanoui
7.Hexo 博客与你
8.修复成功MVP结算