压缩比 = 压缩后大小 / 压缩前大小
越低越好。
一般来说,压缩比越低,压缩和解压的耗时越长。
.zip
:zip
程序压缩的文件.gz
:gzip
程序压缩的文件.bz2
:bzip2
程序压缩的文件.xz
:xz
程序压缩的文件.tar
:tar
程序打包的文件,未压缩.tar.gz
、.tar.bz2
、.tar.xz
:tar
程序打包,并经过上述程序压缩的文件兼容性最佳,但是压缩比高。
Ubuntu 中自带解压程序,但压缩程序要另下。
# 打包文件 / 添加文件到压缩包
zip 压缩文件.zip 文件1 文件2 ...
# 打包目录,包含其中的文件
zip -r 压缩文件.zip 目录1 目录2 ...
# 删除压缩包里面的文件
zip -d 压缩文件.zip 路径
# 列出压缩包里面的文件
zip -sf 压缩包.zip # 只是列出文件
unzip -l 压缩包.zip # 还有其他信息
# 解压缩到当前目录
unzip 压缩包.zip
# 解压缩到特定目录(目录不存在则会自动创建)
unzip 压缩包.zip -d 路径
压缩时,压缩文件内的路径按照输入的源文件路径确定,解压缩会使用。见下例:
ding@ding-server:~$ zip -r s.zip /etc/systemd
...
adding: etc/systemd/ (stored 0%)
adding: etc/systemd/journald.conf (deflated 48%)
...
ding@ding-server:~$ unzip -l s.zip
Archive: s.zip
Length Date Time Name
--------- ---------- ----- ----
0 2022-05-07 09:39 etc/systemd/
1042 2020-04-22 17:04 etc/systemd/journald.conf
642 2022-04-14 11:49 etc/systemd/resolved.conf
...
ding@ding-server:~$ cd /etc/
ding@ding-server:/etc$ zip -r ~/s2.zip systemd
...
adding: systemd/ (stored 0%)
adding: systemd/journald.conf (deflated 48%)
...
ding@ding-server:~$ cd ~
ding@ding-server:/etc$ unzip -l s2.zip
Archive: s2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2022-05-07 09:39 systemd/
1042 2020-04-22 17:04 systemd/journald.conf
642 2022-04-14 11:49 systemd/resolved.conf
...
Linux 中三种常见的压缩格式。
# 压缩文件,不保留源文件,输出的文件名是原文件名加上 .gz
gzip 文件
# 压缩文件,保留(keep)源文件
gzip -k 文件
# 解压(decompress)文件,不保留压缩文件
gzip -d 压缩文件.gz
# 查看压缩文件内容
zcat 压缩文件.gz
zmore 压缩文件.gz
zless 压缩文件.gz
# 在压缩文件中查找特定文本
zgrep "要查找的文本" 压缩文件.gz
用法大同小异。
扩展名 | 压缩 / 解压缩 | cat |
more |
less |
grep |
---|---|---|---|---|---|
.gz |
gzip |
zcat |
zmore |
zless |
zgrep |
.bz2 |
bzip2 |
bzcat |
bzmore |
bzless |
bzgrep |
.xz |
xz |
xzcat |
xzmore |
xzless |
xzgrep |
压缩比:gzip > bzip2 > xz
耗时:gzip < bzip2 < xz
打包
tar
打包,未压缩的文件tar
打包和压缩的文件tar -cv -f 包.tar 文件或目录1 文件或目录2 ...
tar -zcv -f 压缩包.tar.gz 文件或目录1 文件或目录2 ...
tar -jcv -f 压缩包.tar.bz2 文件或目录1 文件或目录2 ...
tar -Jcv -f 压缩包.tar.xz 文件或目录1 文件或目录2 ...
选项:
-z
/ -j
/ -J
:压缩方式,分别为 gzip / bzip2 / xz-c
:建立打包文件(create)-v
:过程中将处理的文件名显示出来(verbose)-f 文件名
:定义文件名;f
也可以跟在前面的参数后面,但要保证 f
后面是空格和文件名(如 -zcvf 压缩包.tar.gz
)-p
:保留数据的原本权限、属性,常用于备份重要的配置文件--exclude=路径
:压缩过程中,不要打包指定文件(路径的格式要和要压缩的文件的路径格式一致,且要写在要压缩的文件之前)-t
:查询(list)
ding@ding-server:~$ tar -t -f 包
etc/systemd/
etc/systemd/gpg-agent-ssh.socket
etc/systemd/resolved.conf
-v
:显示详细信息(verbose)
ding@ding-server:~$ tar -tv -f 包
drwxr-xr-x root/root 0 2022-05-07 09:39 etc/systemd/
lrwxrwxrwx root/root 0 2022-02-23 16:54 etc/systemd/gpg-agent-ssh.socket -> /usr/lib/systemd/user/gpg-agent-ssh.socket
-rw-r--r-- root/root 642 2022-04-14 11:49 etc/systemd/resolved.conf
也可以加上压缩方式的选项。
# 解包到当前路径
tar -x -f 包
# 仅解开单一文件
tar -xv -f 包 要解开的文件
# 解包到指定路径;路径必须存在
tar -xv -f 包 -C 要解压到的路径
选项:
-x
:解包文件(extract)-v
:过程中将处理的文件名显示出来(verbose)也可以加上压缩方式的选项。