linux压缩归档命令gzip、bzip2、xz、tar、zip详解

您所在的位置:网站首页 手机怎么将多个文件压缩成一个压缩包呢 linux压缩归档命令gzip、bzip2、xz、tar、zip详解

linux压缩归档命令gzip、bzip2、xz、tar、zip详解

2023-12-13 05:33| 来源: 网络整理| 查看: 265

本文使用运行环境如下: 操作系统:Ubuntu Linux 18.04 64 bit

在windows系统下常用winrar、bindzip等软件打包并压缩文件与文件夹,linux下也有相应的工具,常用的压缩工具为gzip、bzip2、xz和tar,前三者只能压缩单个文件,使用tar可以将文件目录打包后调用gzip、bzip2、xz软件实现多个文件和目录打包压缩,另外,linux下zip与unzip命令压缩/解压兼容windows下zip文件。

linux压缩/解压命令众多,本文就来一探究竟,命令千万条,常用的也就几条而已。

1. gzip压缩/解压

gzip是linux系统流行且常用的压缩命令

1.1 命令 Usage: gzip [OPTION]... [FILE]... # 压缩/解压 gzip [-cdtv#] 文件名 # 查看压缩文件 zcatz 文件名.gz zmore 文件名.gz zless 文件名.gz # 查找压缩文件内容 zgrep -n '目标字符' 文件名.gz 1.2 选项

gzip选项可通过gzip -h命令查询,以下为部分选项:

选项详细说明-cstdout将压缩/解压后文件输出到标准输出上,并保留原始文件不变-ddecompress解压缩,使用-d时相当于使用gunzip-fforce强行解开压缩文件,若文件已存在将被解压后的文件覆盖-hhelp帮助菜单-kkeep保留原文件-llist显示每一个压缩文件的压缩后大小压缩前大小压缩率未压缩前文件名-Llicense显示软件许可证-nno-name压缩时不保存原始文件的文件名和时间戳,解压缩时不恢复原始文件的文件名和时间戳-Nname压缩时保存原始文件的文件名和时间戳,解压缩时恢复原始文件的文件名和时间戳-qquiet抑制所有警告信息-rrecursive递归地操作目录下的每一个文件,而不是将目录打包压缩成文件-Ssuffix=SUF在压缩文件上使用后缀SUF-ttest测试压缩文件完整性-vverbose显示压缩详细信息-##为数字,表示压缩等级,-1压缩最快压缩比最差,-9压缩最慢压缩比最好,默认为-6 1.3 用法

选项千万条,常用一两条:

默认不带选项压缩/解压时,原文件将被删除

1.3.1 压缩文件且不保留原文件 $ echo "hello" > 1.txt # 新建1.txt文件,内容为"hello" $ gzip 1.txt # 压缩1.txt文件 $ ls 1.txt.gz

1.txt.gz即压缩后的文件,原文件1.txt已经不存在

1.3.2 解压文件且不保留原文件 $ gzip -d 1.txt.gz # 使用-d选项表示解压 $ ls 1.txt

或者

$ gunzip 1.txt.gz # 使用gunzip解压,不推荐 $ ls 1.txt 1.3.3 压缩且保留原文件

>号将输出到标准输出的数据重定向到 >之后的文件中, 重命名压缩文件可以用这种方法

$ gzip -c 1.txt > 1.txt.gz # '>'号之后的文件可以自定义 $ ls 1.txt 1.txt.gz

或者

$ gzip -k 1.txt $ ls 1.txt 1.txt.gz 1.3.4 解压且保留原文件

>号将输出到标准输出的数据重定向到 >之后的文件中, 重命名解压文件可以用这种方法

$ gzip -cd 1.txt.gz > 1.txt # '>'号之后的文件可以自定义 $ ls 1.txt 1.txt.gz

或者

$ gzip -dk 1.txt.gz $ ls 1.txt 1.txt.gz 1.3.5 压缩/解压时显示信息 $ ls 1.txt $ gzip -kv 1.txt 1.txt: -33.3% -- replaced with 1.txt.gz $ ls 1.txt 1.txt.gz $ rm 1.txt $ gzip -dkv 1.txt.gz 1.txt.gz: -33.3% -- replaced with 1.txt $ ls 1.txt 1.txt.gz 1.3.6 指定最佳压缩比

指定选项 -9即指定了最大的压缩比

gzip -cvk9 1.txt > 1.txt.gz 1.3.7 查看压缩文件内容

zcat、zmore、zless相当于适用gzip压缩文件的查看工具

$ zcat 1.txt.gz hello $ zmore 1.txt.gz hello $ zless 1.txt 1.3.8 查找压缩文件中的字符串

zgrep相当于适用gzip压缩文件的查找工具

$ zgrep -n 'he' 1.txt.gz 1:hello 2. bzip2压缩/解压

bizp2命令和gzip基本相同,bzip2命令压缩率更高

2.1 命令 usage: bzip2 [flags and input files in any order] # 压缩/解压 bzip2 [-cdkzv#] 文件名 # 查看压缩文件 bzcat 文件名.bz2 bzmore 文件名.bz2 bzless 文件名.bz2 # 查找压缩文件内容 bzgrep -n '目标字符' 文件名.bz2 2.2 选项

bzip2选项通过bzip2 -h命令查询,以下为部分选项:

选项详细说明-cstdout将压缩/解压后文件输出到标准输出上,并保留原始文件不变-ddecompress强制解压,相当于使用bunzip2-kkeep保留原文件-zcompress强制压缩,默认参数,可省略-vverbose可视化压缩/解压信息,如压缩比-hhelp打印帮助信息-fforce覆盖已经存在的文件-ttest测试压缩文件完整性-qquiet抑制非关键性错误-ssmall使用较少的内存,最多2500k-Llicense打印许可证和版本-Vversion打印许可证和版本-##为数字,表示压缩等级,-1压缩最快压缩比最差,-9压缩最慢压缩比最好 2.3 用法 2.3.1 压缩文件且不保留原文件 $ echo "bzip2" > 1.txt # 新建1.txt文件,内容为"bzip2" $ cat 1.txt # 查看1.txt文件内容 bzip2 $ ls 1.txt $ bzip2 1.txt # 压缩1.txt文件 $ ls 1.txt.bz2

1.txt.bz2即压缩后的文件,原文件1.txt已经不存在

2.3.2 解压文件且不保留原文件 $ ls 1.txt.bz2 $ bzip2 -d 1.txt.bz2 # 使用-d选项表示解压 $ ls 1.txt

或者

$ ls 1.txt.bz2 $ bunzip2 1.txt.bz2 # 使用bunzip2解压,不推荐 $ ls 1.txt 2.3.3 压缩且保留原文件

>号将输出到标准输出的数据重定向到 >之后的文件中, 重命名压缩文件可以用这种方法

$ ls 1.txt $ bzip2 -c 1.txt > 1.txt.bz2 # '>'号之后的文件名可以自定义 $ ls 1.txt 1.txt.bz2

或者

$ ls 1.txt $ bzip2 -k 1.txt $ ls 1.txt 1.txt.bz2 2.3.4 解压且保留原文件

>号将输出到标准输出的数据重定向到 >之后的文件中, 重命名解压文件可以用这种方法

$ ls 1.txt.bz2 $ bzip2 -cd 1.txt.bz2 > 1.txt # '>'号之后的文件名可以自定义 $ ls 1.txt 1.txt.bz2

或者

$ ls 1.txt.bz2 $ bzip2 -dk 1.txt.bz2 $ ls 1.txt 1.txt.bz2 2.3.5 压缩/解压时显示信息 $ ls 1.txt $ bzip2 -kv 1.txt 1.txt: 0.130:1, 61.333 bits/byte, -666.67% saved, 6 in, 46 out. $ ls 1.txt 1.txt.bz2 $ rm 1.txt $ bzip2 -dkv 1.txt.bz2 1.txt.bz2: done $ ls 1.txt 1.txt.bz2 2.3.6 指定最佳压缩比 $ ls 1.txt $ bzip2 -kv9 1.txt 1.txt: 0.130:1, 61.333 bits/byte, -666.67% saved, 6 in, 46 out. $ ls 1.txt 1.txt.bz2 2.3.7 查看压缩文件内容 $ ls 1.txt 1.txt.bz2 $ bzcat 1.txt.bz2 bzip2 $ bzmore 1.txt.bz2 ------> 1.txt.bz2 1.txt.bz2 1.txt # 新建1.txt文件内容为"xz tool" $ ls # 列出当前路径下文件 1.txt $ xz 1.txt # 压缩文件 $ ls 1.txt.xz 3.3.2 解压文件且不保留原文件 $ ls 1.txt.xz $ xz -d 1.txt.xz $ ls 1.txt

或者使用unxz命令解压,效果和xz -d相同

$ ls 1.txt.xz $ unxz 1.txt.xz $ ls 1.txt 3.3.3 压缩且保留原文件

使用重定向方式重命名压缩文件

$ ls 1.txt $ xz -c 1.txt > 1.txt.gz # '>'号之后的文件名可以自定义 $ ls 1.txt 1.txt.gz

或者使用-k保留原文件

$ ls 1.txt $ xz -k 1.txt $ ls 1.txt 1.txt.xz 3.3.4 解压且保留原文件

使用重定向方式重命名解压文件

$ ls 1.txt.xz $ xz -cd 1.txt.xz > 1.txt # '>'号之后的文件名可以自定义 $ ls 1.txt 1.txt.xz

或者使用-k保留原文件

$ ls 1.txt.xz $ xz -dk 1.txt.xz # d表示解压,k表示保留原文件 $ ls 1.txt 1.txt.xz 3.3.5 压缩/解压时显示信息 $ ls 1.txt $ xz -kv 1.txt 1.txt (1/1) 100 % 64 B / 8 B = 8.000 $ ls 1.txt 1.txt.xz $ rm 1.txt $ xz -dkv 1.txt.xz 1.txt.xz (1/1) 100 % 64 B / 8 B = 8.000 $ ls 1.txt 1.txt.xz 3.3.6 指定最佳压缩比 $ ls 1.txt $ xz -kv9 1.txt 1.txt (1/1) 100 % 64 B / 8 B = 8.000 $ ls 1.txt 1.txt.xz 3.3.7 查看压缩文件内容 $ ls 1.txt 1.txt.xz $ xzcat 1.txt.xz xz tool $ xzmore 1.txt.xz ------> 1.txt.xz a..e}.txt a.txt b.txt c.txt d.txt e.txt $ ls a-e.tar.gz a.txt b.txt c.txt d.txt e.txt union.tar.gz 4.3.2 查看压缩文件 $ ls a-e.tar.gz union.tar.gz $ tar -tv -f a-e.tar.gz -rw-rw-r-- ryan/ryan 0 2020-11-22 02:55 a.txt -rw-rw-r-- ryan/ryan 0 2020-11-22 02:55 b.txt -rw-rw-r-- ryan/ryan 0 2020-11-22 02:55 c.txt -rw-rw-r-- ryan/ryan 0 2020-11-22 02:55 d.txt -rw-rw-r-- ryan/ryan 0 2020-11-22 02:55 e.txt $ tar -tv -f union.tar.gz drwxrwxr-x ryan/ryan 0 2020-11-22 02:49 ./ drwxrwxr-x ryan/ryan 0 2020-11-22 02:50 ./c/ -rw-rw-r-- ryan/ryan 0 2020-11-22 02:50 ./c/c.c drwxrwxr-x ryan/ryan 0 2020-11-22 02:50 ./a/ -rw-rw-r-- ryan/ryan 0 2020-11-22 02:50 ./a/a.c drwxrwxr-x ryan/ryan 0 2020-11-22 02:50 ./b/ -rw-rw-r-- ryan/ryan 0 2020-11-22 02:50 ./b/b.c 4.3.3 解压打包压缩文件

解压到当前目录

$ ls a-e.tar.gz union.tar.gz $ tar -xzv -f a-e.tar.gz a.txt b.txt c.txt d.txt e.txt $ ls a-e.tar.gz a.txt b.txt c.txt d.txt e.txt union.tar.gz $ tar -xzv -f union.tar.gz ./ ./c/ ./c/c.c ./a/ ./a/a.c ./b/ ./b/b.c $ ls a a-e.tar.gz a.txt b b.txt c c.txt d.txt e.txt union.tar.gz

解压到指定目录,这里解压到当前目录新建的tmp目录

$ ls a-e.tar.gz union.tar.gz $ mkdir tmp $ ls a-e.tar.gz tmp union.tar.gz $ tar -xzv -f union.tar.gz -C tmp/ # 将union.tar.gz解压缩到当前目录的tmp/目录下 ./ ./c/ ./c/c.c ./a/ ./a/a.c ./b/ ./b/b.c $ ls tmp/ a b c $ tar -xzv -f a-e.tar.gz -C tmp/ # 将a-e.tar.gz解压缩到当前目录的tmp/目录下 a.txt b.txt c.txt d.txt e.txt $ ls tmp/ a a.txt b b.txt c c.txt d.txt e.txt 5. zip压缩解压

zip命令兼容windows系统的zip格式,前面介绍的gzip、bzip2、xz均不能整个压缩目录,zip命令提供了这样的支持,但zip命令不提供查看文件内容的支持。压缩用zip命令,解压用unzip命令。

5.1 命令 Usage: zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list] Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir] # 压缩 zip [-qr] 压缩文件名.zip 源文件/源目录 # 解压 unzip 压缩文件名.zip unzip 压缩文件名.zip -d 解压路径 #指定解压路径 5.2 选项

zip常用选项:

选项详细说明-qquiet operation静默压缩、解压-rrecurse into directories递归操作,压缩目录时使用-Ttest zipfile integrity测试文件完整性

unzip常用选项:

选项详细说明-llist files查看压缩文件中的文件列表-dextract files into exdir指定解压路径 5.3 用法 5.3.1 压缩文件

压缩当前目录

$ ls tmp $ tree tmp/ # 列出tmp目录结构 tmp/ ├── a │ └── a.c ├── a.txt ├── b │ └── b.c ├── b.txt ├── c │ └── c.c ├── c.txt ├── d.txt └── e.txt 3 directories, 8 files $ zip -qr tmp.zip tmp/ # 压缩当前目录下tmp目录到tmp.zip文件,目录需要-r $ ls tmp tmp.zip 5.3.2 解压文件

解压到当前文件夹

$ ls tmp.zip $ unzip tmp.zip Archive: tmp.zip creating: tmp/ extracting: tmp/a.txt creating: tmp/c/ extracting: tmp/c/c.c extracting: tmp/c.txt creating: tmp/a/ extracting: tmp/a/a.c extracting: tmp/d.txt creating: tmp/b/ extracting: tmp/b/b.c extracting: tmp/e.txt extracting: tmp/b.txt $ ls tmp tmp.zip $ tree tmp tmp ├── a │ └── a.c ├── a.txt ├── b │ └── b.c ├── b.txt ├── c │ └── c.c ├── c.txt ├── d.txt └── e.txt 3 directories, 8 files

解压到指定文件夹,文件夹不存在时自动创建

$ unzip tmp.zip -d extrac/ Archive: tmp.zip creating: extrac/tmp/ extracting: extrac/tmp/a.txt creating: extrac/tmp/c/ extracting: extrac/tmp/c/c.c extracting: extrac/tmp/c.txt creating: extrac/tmp/a/ extracting: extrac/tmp/a/a.c extracting: extrac/tmp/d.txt creating: extrac/tmp/b/ extracting: extrac/tmp/b/b.c extracting: extrac/tmp/e.txt extracting: extrac/tmp/b.txt $ ls extrac tmp tmp.zip $ tree extrac/ extrac/ └── tmp ├── a │ └── a.c ├── a.txt ├── b │ └── b.c ├── b.txt ├── c │ └── c.c ├── c.txt ├── d.txt └── e.txt 4 directories, 8 files 5.3.3 查看压缩文件结构 $ unzip -l tmp.zip Archive: tmp.zip Length Date Time Name --------- ---------- ----- ---- 0 2020-11-22 03:23 tmp/ 0 2020-11-22 02:55 tmp/a.txt 0 2020-11-22 03:23 tmp/c/ 0 2020-11-22 02:50 tmp/c/c.c 0 2020-11-22 02:55 tmp/c.txt 0 2020-11-22 03:23 tmp/a/ 0 2020-11-22 02:50 tmp/a/a.c 0 2020-11-22 02:55 tmp/d.txt 0 2020-11-22 03:23 tmp/b/ 0 2020-11-22 02:50 tmp/b/b.c 0 2020-11-22 02:55 tmp/e.txt 0 2020-11-22 02:55 tmp/b.txt --------- ------- 0 12 files 6. 小结 本文主要总结了gzip、bzip2、xz以及tar命令的常见用法,就压缩率来说xz>bzip2>gzip,就压缩时间来说gzip


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3