Linux下的常用压缩工具的用法和示例
点击此处查看最新的网赚项目教程
大家好,这里是程序员杰克。一名平平无奇的嵌入式软件工程师。
在嵌入式Linux的开发中,对文件、目录进行打包、压缩和解压缩的操作,最常用使用的是tar命令行工具。本文会介绍tar命令行工具的参数,然后通过简单示例演示如何使用tar命令行工具进行打包和解包操作。除此之外,本文还会介绍一些Linux系统下常见压缩格式以及压缩命令行工具的使用方法。
下面正式进入本章推送的内容。
01 tar命令行工具
在Linux中,tar(tape archive)是一个常用的命令行工具,用来将多个文件和目录组合成一个单一的归档文件(打包),也可以用来解压已经存在的归档文件(解包)。其功能侧重于打包/解包操作,通常与其他压缩工具(gzip、bzip2、xz等)一起使用。其使用语法如下:
tar [选项列表...] [文件/目录名] [...]
由于tar命令行指令最初是为磁带设备设计的,其命令内容太多,这里仅罗列常用的参数,如下所示:
参数
描述
-c
主操作模式参数。创建新的归档文件(打包).
-x
主操作模式参数。从归档文件中提取文件(解包).
-t
主操作模式参数。列出归档文件的内容(查看包的内容).
-r
主操作模式参数。追加文件到归档文件.
-u
主操作模式参数。将源压缩目录/文件的修改内容更新到归档文件中.
-f
设备选择和切换参数。指定压缩包的名字.该参数后面必须紧跟文件名.
-j
压缩选项参数。使用bzip2压缩归档文件.
-J
压缩选项参数。使用xz压缩归档文件.
-z
压缩选项参数。使用gzip压缩归档文件.
-C
本地文件名选项参数。切换到指定路径.
示例一:创建归档文件(打包)
使用tar命令创建归档文件,使用-c和-f参数,终端示例如下:
//创建归档文件tarTest.tar(打包).
lbh@lbh-virtual-machine:~/workspace$ ls
test
lbh@lbh-virtual-machine:~/workspace$ tar -cf tarTest.tar test/
lbh@lbh-virtual-machine:~/workspace$ ls
tarTest.tar test
示例二:提取归档文件(解包)
使用tar命令提取归档文件,使用-x和-f参数,终端示例如下:
//从归档文件tarTest.tar中提取内容(解包).
lbh@lbh-virtual-machine:~/workspace$ ls
tarTest.tar
lbh@lbh-virtual-machine:~/workspace$ tar -xf tarTest.tar
lbh@lbh-virtual-machine:~/workspace$ ls
tarTest.tar test
示例三:创建压缩后的归档文件(打包)
使用tar命令创建归档文件并进行压缩,使用-c和-f参数,根据不同压缩方式可选择不同的参数,-j(bzip2)、-z(gzip)、-J(xz)。终端示例如下:
lbh@lbh-virtual-machine:~/workspace$ ls
test
//创建归档文件(打包), 并使用bzip2压缩
lbh@lbh-virtual-machine:~/workspace$ tar -cjf bzip2Test.tar.bz2 test/
//创建归档文件(打包), 并使用gzip压缩
lbh@lbh-virtual-machine:~/workspace$ tar -czf gzipTest.tar.gz test/
//创建归档文件(打包), 并使用xz压缩
lbh@lbh-virtual-machine:~/workspace$ tar -cJf xzTest.tar.xz test/
lbh@lbh-virtual-machine:~/workspace$ ls
bzip2Test.tar.bz2 gzipTest.tar.gz test xzTest.tar.xz
示例四:提取归档文件(解包)并解压缩
使用tar命令提取压缩的归档文件,使用-x和-f参数,根据不同压缩方式使用不同的参数,-j(bzip2)、-z(gzip)、-J(xz)。终端示例如下:
//提取归档文件(bzip2压缩)
lbh@lbh-virtual-machine:~/workspace$ rm -r test/
lbh@lbh-virtual-machine:~/workspace$ ls
bzip2Test.tar.bz2 gzipTest.tar.gz xzTest.tar.xz
lbh@lbh-virtual-machine:~/workspace$ tar -xjf bzip2Test.tar.bz2
lbh@lbh-virtual-machine:~/workspace$ ls
bzip2Test.tar.bz2 gzipTest.tar.gz test xzTest.tar.xz
//提取归档文件(gzip压缩)
lbh@lbh-virtual-machine:~/workspace$ rm -r test/
lbh@lbh-virtual-machine:~/workspace$ ls
bzip2Test.tar.bz2 gzipTest.tar.gz xzTest.tar.xz
lbh@lbh-virtual-machine:~/workspace$ tar -xzf gzipTest.tar.gz
lbh@lbh-virtual-machine:~/workspace$ ls
bzip2Test.tar.bz2 gzipTest.tar.gz test xzTest.tar.xz
//提取归档文件(xz压缩)
lbh@lbh-virtual-machine:~/workspace$ rm -r test/
lbh@lbh-virtual-machine:~/workspace$ ls
bzip2Test.tar.bz2 gzipTest.tar.gz xzTest.tar.xz
lbh@lbh-virtual-machine:~/workspace$ tar -xJf xzTest.tar.xz
lbh@lbh-virtual-machine:~/workspace$ ls
bzip2Test.tar.bz2 gzipTest.tar.gz test xzTest.tar.xz
示例五:查看归档文件内容
使用tar命令还可以在不解压的情况下查看归档文件的内容,通过使用-t和-f参数便可实现,终端示例如下:
//查看归档文件内容
tar -tf bzip2Test.tar.bz2
test/
test/c.c
test/a.c
test/b.c
示例六:追加文件到归档文件
使用tar命令可以追加文件到归档文件中,通过使用-r和-f参数便可实现,终端示例如下:
//1. 查看append.tar归档文件的内容.
lbh@lbh-virtual-machine:~/workspace$ tar -tf append.tar
test/
test/c.c
test/a.c
test/b.c
//2. 将append.c文件追加到append.tar归档文件中.
lbh@lbh-virtual-machine:~/workspace$ tar -rf append.tar append.c
//3. 查看查看append.tar归档文件的内容(已添加append.c).
lbh@lbh-virtual-machine:~/workspace$ tar -tf append.tar
test/
test/c.c
test/a.c
test/b.c
append.c
示例七:更新归档文件的内容
使用tar命令创建了归档文件后,原始内容由变化,可以通过使用-u和-f参数便可实现,终端示例如下:
//1. 创建update.tar归档文件.
lbh@lbh-virtual-machine:~/workspace$ tar -cf update.tar test/
//2. 查看update.tar归档文件内容.
lbh@lbh-virtual-machine:~/workspace$ tar -tf update.tar
test/
test/c.c
test/a.c
test/b.c
//3. 在test目录下, 新建d.c、f.c文件
lbh@lbh-virtual-machine:~/workspace$ cd test/
lbh@lbh-virtual-machine:~/workspace/test$ touch d.c f.c
lbh@lbh-virtual-machine:~/workspace/test$ ls
a.c b.c c.c d.c f.c
//4. 更新update.tar归档文件的/test目录的内容.
lbh@lbh-virtual-machine:~/workspace/test$ cd ../
lbh@lbh-virtual-machine:~/workspace$ tar -uf update.tar test/
//5. 查看update.tar归档文件内容(已更新/test目录内容).
lbh@lbh-virtual-machine:~/workspace$ tar -tf update.tar
test/
test/c.c
test/a.c
test/b.c
test/d.c //新添加的文件.
test/f.c //新添加的文件.
示例八:提取归档文件内容并指定路径
使用tar命令提取归档文件时,可以通过使用-C参数指定路径,终端示例如下:
//1. 查看/dir路径下的内容.
lbh@lbh-virtual-machine:~/workspace$ ls dir
//2. 提取dir.tar归档文件的内容到/dir路径.
lbh@lbh-virtual-machine:~/workspace$ tar -xf dir.tar -C /home/lbh/workspace/dir/
//3. 查看/dir路径下的内容(成功提取).
lbh@lbh-virtual-machine:~/workspace$ ls dir
test
02常见的压缩命令行工具
在linux下,常见的文件格式有:.tar、tar.gz、tar.bz2、.rar、.zip、tar.zx等。对于不同的格式,有其对应的压缩/解压操作的命令行工具。本节内容主要是介绍常用格式的压缩命令行工具gzip和bzip2命令行工具的使用方法,其他命令工具如rar、zip等请自行了解。
gzip压缩工具
gzip工具压缩和解压缩.gz格式。可以使用文件夹的名称对文件夹内的文件压缩,执行的是对各个文件单独压缩。语法和选项如下所示:
gzip [选项] 文件/文件夹 [文件][...]
常使用的选项有: -d、-f、-k、-r、-v.
选项列表:
-c 写入到标准输出, 保持原始文件不改变.
-d 解压缩.
-f 强制覆盖输出的压缩包/解压文件.
-k 保持压缩/解压缩前的文件(不删除原文件).
-l 显示压缩/解压缩的文件列表.
-r 递归操作, 将文件夹内的所有文件都压缩/解压缩.
-t 测试压缩文件的完整性
-v 详细模式, 显示压缩/解压缩的详细内容.
-1 快速压缩
-9 完全压缩
使用示例:
//例子1: 压缩单个文件. 压缩后源文件被删除
lbh@lbh-virtual-machine:~/gztest$ gzip a.c
lbh@lbh-virtual-machine:~/gztest$ ls
a.c.gz b.c c.c
//例子2: .gz压缩包解压. 压缩后源压缩包被删除(-d)
lbh@lbh-virtual-machine:~/gztest$ gzip -d a.c.gz
lbh@lbh-virtual-machine:~/gztest$ ls
a.c b.c c.c
//例子3: 压缩单个文件. 压缩后源文件保留(-k)
lbh@lbh-virtual-machine:~/gztest$ gzip -k a.c
lbh@lbh-virtual-machine:~/gztest$ ls
a.c a.c.gz b.c c.c
//例子4: 压缩文件夹内所有文件(-r), 显示所有操作(-v)
lbh@lbh-virtual-machine:~$ gzip -rv gztest/
gztest//c.c: 0.0% -- replaced with gztest//c.c.gz
gztest//a.c: 0.0% -- replaced with gztest//a.c.gz
gztest//b.c: 0.0% -- replaced with gztest//b.c.gz
lbh@lbh-virtual-machine:~$ ls gztest/
a.c.gz b.c.gz c.c.gz
//例子5: 解压多个文件(-d), 显示所有操作(-v)
lbh@lbh-virtual-machine:~/bzip2test$ ls
a.c.gz b.c.gz c.c.gz
lbh@lbh-virtual-machine:~/bzip2test$ gzip -dv a.c.gz b.c.gz c.c.gz
a.c.gz: 0.0% -- replaced with a.c
b.c.gz: 0.0% -- replaced with b.c
c.c.gz: 0.0% -- replaced with c.c
lbh@lbh-virtual-machine:~/bzip2test$ ls
a.c b.c c.c
bzip2压缩工具
bzip2工具压缩和解压.bz2格式。bzip2工具跟gzip很相似,都是对文件进行操作,选项也基本相同;不同的是bzip2不能对文件夹进行递归压缩文件操作。
bzip2 [选项] 文件名 [文件名] [...]
选项列表:
-c 写入到标准输出.
-d 强制解压缩.
-z 强制压缩.
-f 强制覆盖输出的压缩包.
-k 保持压缩前的文件(不删除原文件).
-t 测试压缩文件的完整性
-v 详细模式, 显示压缩的详细内容.
使用示例:
//例子1: 压缩多个文件
lbh@lbh-virtual-machine:~/bzip2test$ bzip2 a.c b.c c.c
lbh@lbh-virtual-machine:~/bzip2test$ ls
a.c.bz2 b.c.bz2 c.c.bz2
//例子2: 解压缩多个文件
lbh@lbh-virtual-machine:~/bzip2test$ bzip2 -d a.c.bz2 b.c.bz2 c.c.bz2
lbh@lbh-virtual-machine:~/bzip2test$ ls
a.c b.c c.c
03文章总结
本篇推文介绍了tar命令行工具、gzip压缩工具、bzip2压缩工具的用法和示例。掌握其创建和解压的方法对Linux文件管理效率有很大的帮助。虽然Linux的一些系统如Ubuntu等,可以通过图形化界面进行操作,但作为开发学习而言,熟悉其命令行的方法是很有必要的。
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: qs62318888
主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网