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$ lstestlbh@lbh-virtual-machine:~/workspace$ tar -cf tarTest.tar test/lbh@lbh-virtual-machine:~/workspace$ lstarTest.tar  test

示例二:提取归档文件(解包)

使用tar命令提取归档文件,使用-x和-f参数,终端示例如下:

//从归档文件tarTest.tar中提取内容(解包).lbh@lbh-virtual-machine:~/workspace$ lstarTest.tarlbh@lbh-virtual-machine:~/workspace$ tar -xf tarTest.tar lbh@lbh-virtual-machine:~/workspace$ lstarTest.tar  test

示例三:创建压缩后的归档文件(打包)

使用tar命令创建归档文件并进行压缩,使用-c和-f参数,根据不同压缩方式可选择不同的参数,-j(bzip2)、-z(gzip)、-J(xz)。终端示例如下:

lbh@lbh-virtual-machine:~/workspace$ lstest
//创建归档文件(打包), 并使用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$ lsbzip2Test.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$ lsbzip2Test.tar.bz2  gzipTest.tar.gz  xzTest.tar.xzlbh@lbh-virtual-machine:~/workspace$ tar -xjf bzip2Test.tar.bz2 lbh@lbh-virtual-machine:~/workspace$ lsbzip2Test.tar.bz2  gzipTest.tar.gz  test  xzTest.tar.xz
//提取归档文件(gzip压缩)lbh@lbh-virtual-machine:~/workspace$ rm -r test/lbh@lbh-virtual-machine:~/workspace$ lsbzip2Test.tar.bz2 gzipTest.tar.gz xzTest.tar.xzlbh@lbh-virtual-machine:~/workspace$ tar -xzf gzipTest.tar.gzlbh@lbh-virtual-machine:~/workspace$ lsbzip2Test.tar.bz2 gzipTest.tar.gz test xzTest.tar.xz
//提取归档文件(xz压缩)lbh@lbh-virtual-machine:~/workspace$ rm -r test/lbh@lbh-virtual-machine:~/workspace$ lsbzip2Test.tar.bz2 gzipTest.tar.gz xzTest.tar.xzlbh@lbh-virtual-machine:~/workspace$ tar -xJf xzTest.tar.xz lbh@lbh-virtual-machine:~/workspace$ lsbzip2Test.tar.bz2  gzipTest.tar.gz  test  xzTest.tar.xz

示例五:查看归档文件内容

使用tar命令还可以在不解压的情况下查看归档文件的内容,通过使用-t和-f参数便可实现,终端示例如下:

//查看归档文件内容tar -tf bzip2Test.tar.bz2 test/test/c.ctest/a.ctest/b.c

示例六:追加文件到归档文件

使用tar命令可以追加文件到归档文件中,通过使用-r和-f参数便可实现,终端示例如下:

//1. 查看append.tar归档文件的内容.lbh@lbh-virtual-machine:~/workspace$ tar -tf append.tar test/test/c.ctest/a.ctest/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.ctest/a.ctest/b.cappend.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.ctest/a.ctest/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.clbh@lbh-virtual-machine:~/workspace/test$ lsa.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.ctest/a.ctest/b.ctest/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 dirtest

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$ lsa.c.gz  b.c  c.c
//例子2: .gz压缩包解压. 压缩后源压缩包被删除(-d)lbh@lbh-virtual-machine:~/gztest$ gzip -d a.c.gz lbh@lbh-virtual-machine:~/gztest$ lsa.c b.c c.c
//例子3: 压缩单个文件. 压缩后源文件保留(-k)lbh@lbh-virtual-machine:~/gztest$ gzip -k a.c lbh@lbh-virtual-machine:~/gztest$ lsa.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.gzgztest//a.c: 0.0% -- replaced with gztest//a.c.gzgztest//b.c: 0.0% -- replaced with gztest//b.c.gzlbh@lbh-virtual-machine:~$ ls gztest/a.c.gz b.c.gz c.c.gz
//例子5: 解压多个文件(-d), 显示所有操作(-v)lbh@lbh-virtual-machine:~/bzip2test$ lsa.c.gz b.c.gz c.c.gzlbh@lbh-virtual-machine:~/bzip2test$ gzip -dv a.c.gz b.c.gz c.c.gza.c.gz: 0.0% -- replaced with a.cb.c.gz: 0.0% -- replaced with b.cc.c.gz: 0.0% -- replaced with c.clbh@lbh-virtual-machine:~/bzip2test$ lsa.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$ lsa.c.bz2  b.c.bz2  c.c.bz2
//例子2: 解压缩多个文件lbh@lbh-virtual-machine:~/bzip2test$ bzip2 -d a.c.bz2 b.c.bz2 c.c.bz2lbh@lbh-virtual-machine:~/bzip2test$ lsa.c  b.c  c.c

03文章总结

本篇推文介绍了tar命令行工具、gzip压缩工具、bzip2压缩工具的用法和示例。掌握其创建和解压的方法对Linux文件管理效率有很大的帮助。虽然Linux的一些系统如Ubuntu等,可以通过图形化界面进行操作,但作为开发学习而言,熟悉其命令行的方法是很有必要的。

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: qs62318888

主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注