压缩
压缩比: λ = o l d S i z e − n e w S i z e o l d S i z e \lambda = \frac{oldSize - newSize}{ oldSize} λ=oldSizeoldSize−newSize
文件准备
echo "godme" > godme.file echo "judas" > judas.file
gzip
- 压缩文件
gzip godme.file
gzip judas.file
- 默认后缀
.gz
- 自动命名
- 自动删除源文件
- 查看信息
zcat godme.file.gz
zcat judas.file.gz
通过这点应该理解一件事情,
gzip
压缩的是文件内容,而不是文件本身。查看时没有相关文件信息,而是内容的输出。
- 解压文件
gunzip godme.file.gz
gzip -d judas.file.gz
可以看到,解压方式有两种:gunzip
和gzip -d
。后面跟上压缩文件即可。
为了验证我们之前只是压缩文件内容的说法,做一个小实验
可以看到,解压文件的文件名,仅仅是把
.gz
后缀去掉了。也就是说,
gzip
只是单纯的文件内容压缩,关于文件名信息并没有进行保存和管理。所以
gzip
仅仅是针对单个文件的压缩。
- 小结
特别提示:
-n
, n ∈ N + n\in N^+ n∈N+,可以指定压缩比。
gzip
一般用于老平台。
command options description gzip
压缩文件内容 - -d
解压文件内容 - -n
指定压缩比例 zcat
查看压缩文件内容 gunzip
解压文件
- 后缀名
.gz
- 自动添加后缀,不用指定压缩文件名称
- 不保存源文件
- 针对单个文件内容压缩,不管理文件名
bzip2
压缩效果高于
gzip
。小文件压缩效果差,可能会更大,大文件压缩效果更佳。
- 压缩文件
bzip2 godme.txt
bzip2 -k judas.file
-k
保持keep
源文件,不删除。单文件,不用指定压缩文件名。
默认后缀
.bz2
- 查看信息
bzcat godme.txt.bz2
bzcat judas.file.bz2
同样是文件内容
- 解压文件
bzip2 -d godme.txt.bz2
bunzip2 judas.file.bz2
文件名试验
不管文件名,只是去后缀名实现文件内容解压。
- 小结
command options description bzip2
压缩文件内容 -k
保留原文件 -d
解压压缩文件 -n
指定压缩比例 bzcat
查看压缩文件内容 bunzip2
解压压缩文件
- 后缀名
.bz2
- 自动命名,无需指定
- 针对内容,压缩单个文件
xz
- 压缩文件
xz godme.txt
xz -k judas.txt
后缀名
.xz
-k
保留原文件自动后缀命名
- 查看内容
xzcat godme.txt.xz
- 解压文件
xz -d godme.txt.xz
unxz judas.txt.xz
文件名测试
- 小结
command options description xz
压缩文件内容 -k
保留原文件 -d
解压压缩文件 -n
指定压缩比 xzcat
查看压缩内容 unxz
解压压缩文件
unxz
看起来正常了,但是神经病多余正常人,正常人就是神经病。
这种感觉。
- 后缀
.xz
- 自动后缀命名
- 单文件压缩
特殊
zip
- 压缩文件
zip all.zip godme.godme judas.file
- 需指定压缩文件名
- 默认不删除原文件
- 可以压缩多个文件
命令后第一个作为压缩文件名,后续属于压缩范围
- 查看内容
zipnote all.zip
含有文件名称信息
- 解压文件
unzip all.zip
- 小结
command | description |
---|---|
zip | 压缩多个文件 |
zipnote | 查看压缩信息 |
unzip | 解压压缩文件 |
- 需手动指定压缩文件名
- 后缀
.zip
- 可压缩多个文件
- 第一个参数为压缩文件名,后续为压缩文件
- 默认保留原文件
zip
是很多平台默认自带的压缩工具。但是压缩比不高,压缩效率并不太好。
关于怎么可以压缩成多个文件,还有一层隐藏。
归档
压缩只针对一个文件,归档呢?
多个文件合而为一,两者配合天衣无缝。
tar
首先说一下命令选项
options | description |
---|---|
-f | 指定文件名 |
-c | 创建归档 |
-x | 展开归档 |
-t | 查看归档 |
-z | gzip 格式 |
-j | bzip2 格式 |
-J | xz 格式 |
-v | 详细信息 |
你可以看到
-f
,归档文件都必须指定文件名,不论创建还是其他 操作,相当于是强制选项了。接下来操作一下。
- 归档
tar -cf all.tar godme.txt judas.file
创建时,必须
-c
,指定文件名也必须-f
,由于-f
后必须跟上文件名参数,所以每次都是最后一个。默认保留原文件。
- 查看
tar -tf all.tar
打印文件名称信息,不显示内容。
- 目录
可针对目录直接归档
- 解压
tar -xf all.tar
自动解压还原目录
- 小结
- 后缀
.tar
- 必须指定名称
- 可针对目录归档
压缩命令大多只针对单文件进行压缩,
tar
可针对目录完成归档。
常用
压缩命令只压缩内容,无法管理目录结构。
配合归档,先把多个文件合二为一,然后针对单独的归档文件进行压缩。
这就是符合我们使用的模式
tar
其中的格式选项对应的就是压缩方式,展开时也会自动调用
option type -z
gzip
-j
bz2
-J
xz
gzip
-
压缩(
-zcf
)
-
查看(
-ztf
)
-
解压(
-zxf
)
bz2
效果不变,自己尝试
- 压缩(
-jcf
) - 查看(
-jtf
) - 解压(
-jxf
)
xz
自己尝试
- 压缩(
-Jcf
) - 查看(
-Jtf
) - 解压(
-Jxf
)
自动识别
其实当我们归档以后,就有了后缀名了,我们可以不必去指定压缩格式,它可以自动识别的。
options short -ztf
-tf
-zxf
-xf
-jtf
-tf
-jxf
-xf
-Jtf
-tf
-Jxf
-xf
似曾相识
关于压缩,常见的是这种把
tar -zxvf XXX.tar.gz
。然后出来一大堆,感觉高大上,但是你可以简单分析一下。
-v
显示了详细信息看起来比较多-z
指定了格式-x
解压-f
指定文件结果
zv
完全没必要,结果就是tar -xf XXX.tar.gz
。有啥高大上的,别被骗了,不用自己吓自己,慢慢来,总能学会。
如是安慰自己。