14 文件压缩与解压
前面小节介绍了如何对文件和目录删除、移动操作,本小节介绍如何使用命令对文件和目录进行压缩与解压操作,常见的压缩包格式有 .bz2
、.Z
、.gz
、.zip
、.xz
,压缩之后的文件或目录占用更少的空间。
1. tar 命令介绍
下面列举 tar
命令的参数:
tar 命令参数名称 | 功能与作用描述 |
---|---|
-c | 新建立压缩档案 |
-x | 解压缩 |
-t | 查看内容 |
-u | 更新原压缩包的内容 |
-z | gzip 属性的 |
-j | bz2 属性的 |
-Z | compress 属性的 |
-v | 显示所有过程 |
-O | 将文件解压缩成标准输出形式 |
-f | 使用档案名字,此参数都是在最后,其后面跟上一个档案的名字 |
Tips:其中
-c
、-x
、-t
、-u
这五个参数是独立的,每次使用选其中一个,-f
是最后一个参数,后面跟上档案名。
1.1 将指定类型文件打包成 tar 包
为了演示方便,先切入到 /home
目录下,使用 touch
命令创建几个 .txt
文件,然后使用 tar
命令将其打包,命令如下:
cd /home
touch a.txt b.txt c.txt d.txt e.txt
ls -l
tar -cf alltxt.tar *.txt
ls -l
执行结果如下图:
Tips:其中
alltxt.tar
是一个自定义名称,后缀是tar
,前半部分的名字可自行定义,*.txt
中的*
表示通配符代表所有的意思。
1.2 向现有的 tar 包中新增文件
这里再使用 touch
命令创建一个 g.txt
文件,使用 tar
命令将其新增至 alltxt.tar
中,命令如下:
touch g.txt
tar -rf alltxt.tar g.txt
执行结果如下图:
1.3 更新 原来 tar 包中的文件
使用 rm
命令删除 /home
目录中的 a.txt
,然后新建一个 a.txt
表示为更新后的 a.txt
,使用 tar
命令将 a.txt
更新至 alltxt.tar
中,命令如下:
rm -f a.txt
touch a.txt
tar -uf alltxt.tar a.txt
执行结果如下图:
Tips:若
alltxt.tar
中没有a.txt
,那么使用tar -uf
就会将a.txt
新增到alltxt.tar
中。
1.4 列出 tar 包中打包的所有文件
这里为了演示方便,将 /home
目录原有的 .txt
文件全都删除掉,然后使用 tar
命令查看 alltxt.tar
中所有文件列表,命令如下:
ls
rm -f *.txt
ls
tar -tf alltxt.tar
执行结果如下图:
1.5 解开 tar 包中所有文件
接着上面的内容,可以使用 tar
命令将 alltxt.tar
解开把文件释放到当前目录,命令如下:
ls
tar -xf alltxt.tar
ls
执行结果如下图:
1.6 使用 tar 命令压缩
上面打包的 alltxt.tar
文件并没有压缩文件,只是把文件都打包在一起,如下命令可以把 alltxt.tar
压缩成为不同格式的压缩包:
ls
tar -czf alltxt.tar.gz alltxt.tar
ls
tar -cjf alltxt.tar.bz2 alltxt.tar
ls
tar -cZf alltxt.tar.Z alltxt.tar
ls
执行结果如下图:
Tips:命令中参数的含义可参考前面参数表格中的功能描述。
1.7 使用 tar 命令解压缩
为了演示方便,防止读者混淆,先将 alltxt.tar.gz
、alltxt.tar.bz2
、alltxt.tar.Z
三种格式压缩包移动至 study
目录,然后使用 tar
命令解压,命令如下:
ls
mv alltxt.tar.gz study/
mv alltxt.tar.bz2 study/
mv alltxt.tar.Z study/
cd study/
ls
移动过程执行如下图:
如上图所示,将需要解压的三种格式压缩包移动至 /home/study
目录中,下面对其解压缩,命令如下:
ls
tar -zxvf alltxt.tar.gz
ls
rm -f alltxt.tar
ls
tar -jxvf alltxt.tar.bz2
ls
rm -f alltxt.tar
ls
tar -Zxvf alltxt.tar.Z
ls
执行结果如下图:
Tips:命令中参数的含义可参考前面参数表格中的功能描述。
2. zip 格式压缩与解压
CentOS 8 系统中自带 zip
、unzip
压缩与解压工具,可以使用 zip -v
、unzip -v
命令查看当前是否安装 zip
、unzip
工具,若是没有安装,则可以使用如下命令安装:
yum -y update
yum -y install zip unzip
安装过程如下图:
如上图所示,先要更新 yum
源的软件包数据,如下图所示为安装 zip
、unzip
的过程执行图:
Tips:
yum
是 Linux 中的一个软件管理仓库,关于yum
如何安装软件后续小节会详细介绍。
2.1 使用 zip 压缩文件
使用 zip
命令可以将 alltxt.tar
包压缩为 .zip
压缩包,命令如下:
ls
zip alltxt.zip alltxt.tar
ls
执行结果如下:
Tips:可以使用
zip -r zip包名 目录名
递归压缩目录以及目录中所有文件。
2.2 使用 unzip 解压缩
为了演示方便,先将 alltxt.zip
文件移动至 /home/study
中,然后解压,命令如下:
ls
mv alltxt.zip study/
cd study/
ls
unzip alltxt.zip
ls
执行结果如下图:
3. 小结
本小节介绍了如何使用 tar
命令打包文件和解开 tar
包,还介绍了如何使用 tar
将文件包压缩为 .gz
、.bz2
、.Z
格式的压缩包,如何解压缩它们,最后还介绍了如何使用 zip
、unzip
工具压缩与解压 .zip
格式的压缩包,需要注意的是使用 tar
命令将文件打包成 tar
包之后,文件并没有被压缩,只是打包在一起了,压缩文件前,也可以不打包成 tar
包,可以直接对某个文件和目录进行压缩。