700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux压缩归档命令gzip bzip2 xz tar zip详解

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

时间:2020-06-27 07:47:09

相关推荐

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

本文使用运行环境如下:

操作系统:Ubuntu Linux 18.04 64 bit

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

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

1. gzip压缩/解压

gziplinux系统流行且常用的压缩命令

1.1 命令

Usage: gzip [OPTION]... [FILE]...# 压缩/解压gzip [-cdtv#] 文件名# 查看压缩文件zcatz 文件名.gzzmore 文件名.gzzless 文件名.gz# 查找压缩文件内容zgrep -n '目标字符' 文件名.gz

1.2 选项

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

1.3 用法

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

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

1.3.1 压缩文件且不保留原文件

$ echo "hello" > 1.txt # 新建1.txt文件,内容为"hello"$ gzip 1.txt # 压缩1.txt文件$ ls1.txt.gz

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

1.3.2 解压文件且不保留原文件

$ gzip -d 1.txt.gz # 使用-d选项表示解压$ ls1.txt

或者

$ gunzip 1.txt.gz # 使用gunzip解压,不推荐$ ls1.txt

1.3.3 压缩且保留原文件

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

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

或者

$ gzip -k 1.txt $ ls1.txt 1.txt.gz

1.3.4 解压且保留原文件

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

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

或者

$ gzip -dk 1.txt.gz $ ls1.txt 1.txt.gz

1.3.5 压缩/解压时显示信息

$ ls1.txt$ gzip -kv 1.txt 1.txt: -33.3% -- replaced with 1.txt.gz$ ls1.txt 1.txt.gz$ rm 1.txt$ gzip -dkv 1.txt.gz 1.txt.gz: -33.3% -- replaced with 1.txt$ ls1.txt 1.txt.gz

1.3.6 指定最佳压缩比

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

gzip -cvk9 1.txt > 1.txt.gz

1.3.7 查看压缩文件内容

zcatzmorezless相当于适用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 文件名.bz2bzmore 文件名.bz2bzless 文件名.bz2# 查找压缩文件内容bzgrep -n '目标字符' 文件名.bz2

2.2 选项

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

2.3 用法

2.3.1 压缩文件且不保留原文件

$ echo "bzip2" > 1.txt # 新建1.txt文件,内容为"bzip2"$ cat 1.txt # 查看1.txt文件内容bzip2$ ls1.txt$ bzip2 1.txt # 压缩1.txt文件$ ls1.txt.bz2

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

2.3.2 解压文件且不保留原文件

$ ls1.txt.bz2$ bzip2 -d 1.txt.bz2 # 使用-d选项表示解压$ ls1.txt

或者

$ ls1.txt.bz2$ bunzip2 1.txt.bz2 # 使用bunzip2解压,不推荐$ ls1.txt

2.3.3 压缩且保留原文件

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

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

或者

$ ls1.txt$ bzip2 -k 1.txt $ ls1.txt 1.txt.bz2

2.3.4 解压且保留原文件

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

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

或者

$ ls1.txt.bz2$ bzip2 -dk 1.txt.bz2 $ ls1.txt 1.txt.bz2

2.3.5 压缩/解压时显示信息

$ ls1.txt$ bzip2 -kv 1.txt 1.txt: 0.130:1, 61.333 bits/byte, -666.67% saved, 6 in, 46 out.$ ls1.txt 1.txt.bz2$ rm 1.txt$ bzip2 -dkv 1.txt.bz2 1.txt.bz2: done$ ls1.txt 1.txt.bz2

2.3.6 指定最佳压缩比

$ ls1.txt$ bzip2 -kv9 1.txt 1.txt: 0.130:1, 61.333 bits/byte, -666.67% saved, 6 in, 46 out.$ ls1.txt 1.txt.bz2

2.3.7 查看压缩文件内容

$ ls1.txt 1.txt.bz2$ bzcat 1.txt.bz2 bzip2$ bzmore 1.txt.bz2 ------> 1.txt.bz2 <------bzip2$ bzless 1.txt.bz2 ------> 1.txt.bz2 <------

2.3.8 查找压缩文件中的字符串

$ bzgrep -n 'bz' 1.txt.bz2 1:bzip2

3. xz压缩/解压

总体来说,xz的使用方法和gzipbzip2大体相同,xz的压缩率更高,因此压缩同样一个文件,使用xz最费时但压缩后文件最小。

3.1 命令

Usage: xz [OPTION]... [FILE]...# 压缩/解压xz [dtlkc#] 文件名# 查看压缩文件内容xzcat 文件名.xzxzmore 文件名.xzxzless 文件名.xz# 查找压缩文件内容xzgrep -n '目标字符' 文件名.xz

3.2 选项

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

3.3 用法

3.3.1 压缩且不保留原文件

$ echo "xz tool" > 1.txt # 新建1.txt文件内容为"xz tool"$ ls # 列出当前路径下文件1.txt$ xz 1.txt # 压缩文件$ ls1.txt.xz

3.3.2 解压文件且不保留原文件

$ ls1.txt.xz$ xz -d 1.txt.xz $ ls1.txt

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

$ ls1.txt.xz$ unxz 1.txt.xz $ ls1.txt

3.3.3 压缩且保留原文件

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

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

或者使用-k保留原文件

$ ls1.txt$ xz -k 1.txt $ ls1.txt 1.txt.xz

3.3.4 解压且保留原文件

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

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

或者使用-k保留原文件

$ ls1.txt.xz$ xz -dk 1.txt.xz # d表示解压,k表示保留原文件$ ls1.txt 1.txt.xz

3.3.5 压缩/解压时显示信息

$ ls1.txt$ xz -kv 1.txt 1.txt (1/1)100 % 64 B / 8 B = 8.000 $ ls1.txt 1.txt.xz$ rm 1.txt$ xz -dkv 1.txt.xz 1.txt.xz (1/1)100 % 64 B / 8 B = 8.000$ ls1.txt 1.txt.xz

3.3.6 指定最佳压缩比

$ ls1.txt$ xz -kv9 1.txt 1.txt (1/1)100 % 64 B / 8 B = 8.000$ ls1.txt 1.txt.xz

3.3.7 查看压缩文件内容

$ ls1.txt 1.txt.xz$ xzcat 1.txt.xz xz tool$ xzmore 1.txt.xz ------> 1.txt.xz <------xz tool$ xzless 1.txt.xz

3.3.8 查找压缩文件中的字符串

$ ls1.txt 1.txt.xz$ xzgrep -n 'xz' 1.txt.xz 1:xz tool

4. tar打包压缩

前面介绍的gzipbzip2xz命令只能压缩一个文件,而对于压缩整个目录或将多个文件压缩成一个文件就显得无能为力了,tar命令提供了这样一种功能:将多个文件或目录打包成一个文件,同时支持使用gzipbzip2xz命令对打包后的文件进行压缩,因此常见的后缀为.tar.gz.tar.bz2.tar.xz

4.1 命令

Usage: tar [OPTION...] [FILE]...Examples:tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.tar -tvf archive.tar # List all files in archive.tar verbosely.tar -xf archive.tar# Extract all files from archive.tar.# 打包与压缩tar [-z][-j][-J] [cv] [-f 待建立的文件名] 文件名/目录列表...# 查看文件名tar [-z][-j][-J] [tv] [-f 已有的tar文件名]# 解压缩tar [-z][-j][-J] [xv] [-f 已有的tar文件名][-C 解压目录]

4.2 选项

[-z][-j][-J]分别表示有gzipbzip2xz的支持

tar选项通过tar --help命令查询,常用选项如下:

4.3 用法

4.3.1 打包压缩目录

以借助gzip为例,假设当前目录下有3个目录a、b、c,每个目录下分别有一个.c文件,将当前目录打包压缩成union.tar.gz

$ lsa b c$ tree # 以树的形式列出当前目录结构,可用sudo apt install tree命令安装.├── a│ └── a.c├── b│ └── b.c└── c└── c.c3 directories, 3 files$ tar -czv -f union.tar.gz ./././c/./c/c.c./a/./a/a.c./b/./b/b.ctar: .: file changed as we read it$ lsa b c union.tar.gz

将多个文件打包压缩成一个文件

$ lsunion.tar.gz$ touch {a..e}.txt # 新建a.txt b.txt c.txt d.txt e.txt文件$ lsa.txt b.txt c.txt d.txt e.txt union.tar.gz$ tar -czv -f a-e.tar.gz {a..e}.txta.txtb.txtc.txtd.txte.txt$ lsa-e.tar.gz a.txt b.txt c.txt d.txt e.txt union.tar.gz

4.3.2 查看压缩文件

$ lsa-e.tar.gz union.tar.gz$ tar -tv -f a-e.tar.gz -rw-rw-r-- ryan/ryan 0 -11-22 02:55 a.txt-rw-rw-r-- ryan/ryan 0 -11-22 02:55 b.txt-rw-rw-r-- ryan/ryan 0 -11-22 02:55 c.txt-rw-rw-r-- ryan/ryan 0 -11-22 02:55 d.txt-rw-rw-r-- ryan/ryan 0 -11-22 02:55 e.txt$ tar -tv -f union.tar.gz drwxrwxr-x ryan/ryan 0 -11-22 02:49 ./drwxrwxr-x ryan/ryan 0 -11-22 02:50 ./c/-rw-rw-r-- ryan/ryan 0 -11-22 02:50 ./c/c.cdrwxrwxr-x ryan/ryan 0 -11-22 02:50 ./a/-rw-rw-r-- ryan/ryan 0 -11-22 02:50 ./a/a.cdrwxrwxr-x ryan/ryan 0 -11-22 02:50 ./b/-rw-rw-r-- ryan/ryan 0 -11-22 02:50 ./b/b.c

4.3.3 解压打包压缩文件

解压到当前目录

$ lsa-e.tar.gz union.tar.gz$ tar -xzv -f a-e.tar.gz a.txtb.txtc.txtd.txte.txt$ lsa-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$ lsa a-e.tar.gz a.txt b b.txt c c.txt d.txt e.txt union.tar.gz

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

$ lsa-e.tar.gz union.tar.gz$ mkdir tmp $ lsa-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.txtb.txtc.txtd.txte.txt$ ls tmp/a a.txt b b.txt c c.txt d.txt e.txt

5. zip压缩解压

zip命令兼容windows系统的zip格式,前面介绍的gzipbzip2xz均不能整个压缩目录,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 压缩文件名.zipunzip 压缩文件名.zip -d 解压路径 #指定解压路径

5.2 选项

zip常用选项:

unzip常用选项:

5.3 用法

5.3.1 压缩文件

压缩当前目录

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

5.3.2 解压文件

解压到当前文件夹

$ lstmp.zip$ unzip tmp.zip Archive: tmp.zipcreating: tmp/extracting: tmp/a.txtcreating: tmp/c/extracting: tmp/c/c.cextracting: tmp/c.txtcreating: tmp/a/extracting: tmp/a/a.cextracting: tmp/d.txtcreating: tmp/b/extracting: tmp/b/b.cextracting: tmp/e.txtextracting: tmp/b.txt$ lstmp tmp.zip$ tree tmptmp├── a│ └── a.c├── a.txt├── b│ └── b.c├── b.txt├── c│ └── c.c├── c.txt├── d.txt└── e.txt3 directories, 8 files

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

$ unzip tmp.zip -d extrac/Archive: tmp.zipcreating: 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.txt4 directories, 8 files

5.3.3 查看压缩文件结构

$ unzip -l tmp.zip Archive: tmp.zipLengthDate Time Name--------- ---------- ----- ----0 -11-22 03:23 tmp/0 -11-22 02:55 tmp/a.txt0 -11-22 03:23 tmp/c/0 -11-22 02:50 tmp/c/c.c0 -11-22 02:55 tmp/c.txt0 -11-22 03:23 tmp/a/0 -11-22 02:50 tmp/a/a.c0 -11-22 02:55 tmp/d.txt0 -11-22 03:23 tmp/b/0 -11-22 02:50 tmp/b/b.c0 -11-22 02:55 tmp/e.txt0 -11-22 02:55 tmp/b.txt--------- -------0 12 files

6. 小结

本文主要总结了gzipbzip2xz以及tar命令的常见用法,就压缩率来说xz>bzip2>gzip,就压缩时间来说gzip<bzip2<xz,这3个命令只能压缩单个文件;tar命令提供了先将多个文件/目录打包,而后调用gzipbzip2xz工具进行压缩的功能,是文件归档、压缩的常用工具;最后补充了linux系统zip命令压缩/解压的常见用法,zip命令使用-r选项可以直接压缩目录,zip命令暂时发现用得比较少;对gzipbzip2xz比较后,不难发现对三者的操作是类似的,掌握了一个,其他两个也就掌握了,tar命令的常用选项也就那么一两个,熟能生巧,多用几次就记住了,实在记不住,还可以查命令帮助手册。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。