赞
踩
目录
1.1 压缩 (.tar.gz .tar.bz2 .tgz)
1.2 解压缩 (.tar.gz .tar.bz2 .tgz)
不管是在 Linux 还是其他操作系统中,关于数据的压缩和解压缩操作是经常被用到的。由于在 windows 平台文件的相关操作被傻瓜化了,到了 Linux 平台让好多小伙伴感觉有点束手无策,本篇文章中主要为大家讲解基于 Linux 的常用压缩包操作,格式包含:tar.gz, .tgz, .tar.bz2, .zip, .rar, .tar.xz。
在 Linux 操作系统中默认自带两个原始的压缩工具分别是 gzip 和 bzip2, 但是它们都有先天的缺陷,不能打包压缩文件, 每个文件都会生成一个单独的压缩包, 并且压缩之后不会保留原文件, 这是一件叔能忍婶也不能忍的事情。
Linux 中自带一个打包工具,叫做 tar, 默认情况下该工具是不能进行压缩操作的,在这种情况下 tar 和 gzip, bzip2 就联姻了,各自发挥各自的优势,Linux 下最强大的打包压缩工具至此诞生。
我们在使用 tar 进行压缩和解压缩的时候,只需要指定相对用的参数,在其内部就会调用对应的压缩工具 gzip 或者 bzip2 完成指定的操作。
如果使用 tar 完成文件压缩,涉及的参数如下,在使用过程中参数没有先后顺序:
一般认为 .tgz 文件就等同于 .tar.gz 文件,因此它们的压缩方式是相同的。
- # 语法:
- $ tar 参数 生成的压缩包的名字 要压缩的文件(文件或者目录)
-
- # 备注: 关于生成的压缩包的名字, 建议使用标准后缀, 方便识别:
- - 压缩使用 gzip 方式, 标准后缀格式为: .tar.gz
- - 压缩使用 bzip2 方式, 标准后缀格式为: .tar.bz2
举例:使用 gzip 的方式进行文件压缩
- # 查看目录内容
- [root@VM-8-14-centos ~/luffy]# ls
- get onepiece.txt robin.txt
-
- # 压缩目录中所有文件, 如果要压缩某几个文件, 直接指定文件名即可
- [root@VM-8-14-centos ~/luffy]# tar zcvf all.tar.gz *
- get/ # ....... 压缩信息
- get/link.lnk # ....... 压缩信息
- get/onepiece/ # ....... 压缩信息
- get/onepiece/haha.txt
- get/link.txt
- onepiece.txt
- robin.txt
-
- # 查看目录文件, 多了一个压缩文件 all.tar.gz
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar.gz get onepiece.txt robin.txt
举例:使用 bzip2 的方式进行文件压缩
- # 查看目录内容
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar.gz get onepiece.txt robin.txt
-
- # 压缩目录中除 all.tar.gz 的文件和目录
- [root@VM-8-14-centos ~/luffy]# tar jcvf part.tar.bz2 get onepiece.txt robin.txt
- get/ # ....... 压缩信息
- get/link.lnk # ....... 压缩信息
- get/onepiece/ # ....... 压缩信息
- get/onepiece/haha.txt
- get/link.txt
- onepiece.txt
- robin.txt
-
- # 查看目录信息, 多了一个压缩文件 part.tar.bz2
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar.gz get onepiece.txt part.tar.bz2 robin.txt
如果使用 tar 进行文件的解压缩,涉及的参数如下,在使用过程中参数没有先后顺序:
使用以上参数是将压缩包解压到当前目录,如果需要解压到指定目录,需要指定参数 -C。 一般认为 .tgz 文件就等同于 .tar.gz 文件,解压缩方式是相同的。解压的语法格式如下:
- # 语法1: 解压到当前目录中
- $ tar 参数 压缩包名
-
- # 语法2: 解压到指定目录中
- $ tar 参数 压缩包名 -C 解压目录
举例:使用 gzip 的方式进行文件解压缩
- # 查看目录文件信息
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar.gz get onepiece.txt part.tar.bz2 robin.txt temp
-
- # 将 all.tar.gz 压缩包解压缩到 temp 目录中
- [root@VM-8-14-centos ~/luffy]# tar zxvf all.tar.gz -C temp
- get/ # 解压缩文件信息
- get/link.lnk # 解压缩文件信息
- get/onepiece/ # 解压缩文件信息
- get/onepiece/haha.txt # 解压缩文件信息
- get/link.txt
- onepiece.txt
- robin.txt
-
- # 查看temp目录内容, 都是从压缩包中释放出来的
- [root@VM-8-14-centos ~/luffy]# ls temp/
- get onepiece.txt robin.txt
举例:使用 bzip2 的方式进行文件解压缩
- # 删除 temp 目录中的所有文件
- [root@VM-8-14-centos ~/luffy]# rm temp/* -rf
-
- # 查看 luffy 目录中的文件信息
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar.gz get onepiece.txt part.tar.bz2 robin.txt temp
-
- # 将 part.tar.bz2 中的文件加压缩到 temp 目录中
- [root@VM-8-14-centos ~/luffy]# tar jxvf part.tar.bz2 -C temp
- get/ # 解压缩文件信息
- get/link.lnk # 解压缩文件信息
- get/onepiece/ # 解压缩文件信息
- get/onepiece/haha.txt # 解压缩文件信息
- get/link.txt
- onepiece.txt
- robin.txt
-
- # 查看 temp 目录中的文件信息
- [root@VM-8-14-centos ~/luffy]# ls temp/
- get onepiece.txt robin.txt
zip 格式的压缩包在 Linux 中也是很常见的,在某些版本中需要安装才能使用
- $ sudo apt install zip # 压缩
- $ sudo apt install unzip # 解压缩
- # 因为 centos 可以使用 root 用户登录, 基于 root 用户安装软件, 不需要加 sudo
- $ sudo yum install zip # 压缩
- $ sudo yum install unzip # 解压缩
使用 zip 压缩目录需要注意一点,必须要添加参数 -r, 这样才能将子目录中的文件一并压缩,如果要压缩的文件中没有目录,该参数就可以不写了。
另外使用 zip 压缩文件,会自动生成文件后缀.zip, 因此就不需要额外指定了。
- # 语法: 后自动添加压缩包后缀 .zip, 如果要压缩目录, 需要添加参数 r
- $ zip [-r] 压缩包名 要压缩的文件
举例:
- # 查看目录文件信息
- [root@VM-8-14-centos ~/luffy]# ls
- get onepiece.txt robin.txt temp
-
- # 压缩目录 get 和文件 onepiece.txt robin.txt 得到压缩包 all.zip(不需要指定后缀, 自动添加)
- [root@VM-8-14-centos ~/luffy]# zip all onepiece.txt robin.txt get/ -r
- adding: onepiece.txt (stored 0%)
- adding: robin.txt (stored 0%)
- adding: get/ (stored 0%)
- adding: get/link.lnk (stored 0%) # 子目录中的文件也被压缩进去了
- adding: get/onepiece/ (stored 0%) # 子目录中的文件也被压缩进去了
- adding: get/onepiece/haha.txt (stored 0%) # 子目录中的文件也被压缩进去了
- adding: get/link.txt (stored 0%) # 子目录中的文件也被压缩进去了
-
- # 查看目录文件信息, 多了一个压缩包文件 all.zip
- [root@VM-8-14-centos ~/luffy]# ls
- all.zip get onepiece.txt robin.txt temp
对应 zip 格式的文件解压缩,必须要使用 unzip 命令,和压缩的时候使用的命令是不一样的。如果压缩包中的文件要解压到指定目录需要指定参数 -d, 默认是解压缩到当前目录中。
- # 语法1: 解压到当前目录中
- $ unzip 压缩包名
-
- # 语法: 解压到指定目录, 需要添加参数 -d
- $ unzip 压缩包名 -d 解压目录
举例:
- # 查看目录文件信息
- [root@VM-8-14-centos ~/luffy]# ls
- all.zip get onepiece.txt robin.txt temp
-
- # 删除 temp 目录中的所有文件
- [root@VM-8-14-centos ~/luffy]# rm temp/* -rf
-
- # 将 all.zip 解压缩到 temp 目录中
- [root@VM-8-14-centos ~/luffy]# unzip all.zip -d temp/
- Archive: all.zip
- extracting: temp/onepiece.txt # 释放压缩的子目录中的文件
- extracting: temp/robin.txt # 释放压缩的子目录中的文件
- creating: temp/get/
- extracting: temp/get/link.lnk
- creating: temp/get/onepiece/
- extracting: temp/get/onepiece/haha.txt # 释放压缩的子目录中的文件
- extracting: temp/get/link.txt
-
- # 查看 temp 目录中的文件信息
- [root@VM-8-14-centos ~/luffy]# ls temp/
- get onepiece.txt robin.txt
rar 这种压缩格式在 Linux 中并不常用,这是 Windows 常用的压缩格式,如果想要在 Linux 压缩和解压这种格式的文件需要额外安装对应的工具,不同版本的 Linux 安装方式也是不同的。
- # 执行在线下载命令即可
- $ sudo apt install rar
- # 需要下载安装包, 官方地址: https://www.rarlab.com/download.htm
- # 从下载页面找到 Linux 版本的下载链接并复制链接地址, 使用 wget 下载到本地
- $ wget https://www.rarlab.com/rar/rarlinux-x64-6.0.0.tar.gz
-
- # 将下载得到的 rarlinux-x64-6.0.0.tar.gz 压缩包解压缩, 得到解压目录 rar
- $ tar zxvf rarlinux-x64-6.0.0.tar.gz
-
- # 将得到的解压目录移动到 /opt 目录中 (因为/opt软件安装目录, 移动是为了方便管理, 不移动也没事儿)
- # 该操作需要管理员权限, 我是使用 root 用户操作的
- $ mv ./rar /opt
-
- # 给 /opt/rar 目录中的可执行程序添加软连接, 方便命令解析器可以找到该压缩命令
- $ ln -s /opt/rar/rar /usr/local/bin/rar
- $ ln -s /opt/rar/unrar /usr/local/bin/unrar
该方法在任何版本的 Linux 系统中都适用
使用 rar 压缩过程中的注意事项和 zip 是一样的,如果压缩的是目录, 需要指定参 -r, 如果只压缩文件就不需要添加了。压缩过程中需要使用参数 a (archive), 压缩归档的意思。
rar 工具在生成压缩包的时候也会自动添加后缀,名字为.rar, 因此我们只需要指定压缩包的名字。
- # 文件压缩, 需要使用参数 a, 压缩包名会自动添加后缀 .rar
- # 如果压缩了目录, 需要加参数 -r
- # 语法:
- $ rar a 压缩包名 要压缩的文件 [-r]
-
- # 举例
- # 查看目录文件信息
- [root@VM-8-14-centos ~/luffy]# ls
- get onepiece.txt robin.txt temp
-
- # 压缩文件 onepiece.txt, robin.txt 和目录 get/ 到要是文件 all.rar 中
- [root@VM-8-14-centos ~/luffy]# rar a all onepiece.txt get/ robin.txt -r
-
- RAR 6.00 Copyright (c) 1993-2020 Alexander Roshal 1 Dec 2020
- Trial version Type 'rar -?' for help
-
- Evaluation copy. Please register.
-
- Creating archive all.rar
-
- Adding onepiece.txt OK
- Adding get/link.lnk OK # 子目录中的文件也被压缩了
- Adding get/onepiece/haha.txt OK # 子目录中的文件也被压缩了
- Adding get/link.txt OK # 子目录中的文件也被压缩了
- Adding robin.txt OK
- Adding get/onepiece OK
- Done
- [root@VM-8-14-centos ~/luffy]# ls
- all.rar get onepiece.txt robin.txt temp
解压缩.rar 格式的文件的时候,可以使用 rar 也可以使用 unrar, 操作方式是一样的,需要添加参数 x, 默认是将压缩包内容释放到当前目录中,如果要释放到指定目录直接指定解压目录名即可,不需要使用任何参数。
- # 解压缩: 需要参数 x
- # 语法: 解压缩到当前目录中
- $ rar/unrar x 压缩包名字
-
- # 语法: 解压缩到指定目录中
- rar/unrar x 压缩包名字 解压目录
举例:
- # 查看目录文件信息
- [root@VM-8-14-centos ~/luffy]# ls
- all.rar get onepiece.txt robin.txt temp
-
- # 删除 temp 目录中的所有文件
- [root@VM-8-14-centos ~/luffy]# rm temp/* -rf
-
- # 将 all.rar 中的文件解压缩到 temp 目录中
- [root@VM-8-14-centos ~/luffy]# rar x all.rar temp/
-
- RAR 6.00 Copyright (c) 1993-2020 Alexander Roshal 1 Dec 2020
- Trial version Type 'rar -?' for help
-
-
- Extracting from all.rar
-
- Extracting temp/onepiece.txt OK
- Creating temp/get OK
- Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
- Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
- Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
- Creating temp/get/onepiece OK
- Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
- Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
- Extracting temp/get/onepiece/haha.txt OK
- Extracting temp/get/link.txt OK
- Extracting temp/robin.txt OK
- All OK
-
- # 查看 temp 目录中文件信息
- [root@VM-8-14-centos ~/luffy]# ls temp/
- get onepiece.txt robin.txt
.xz 格式的文件压缩和解压缩都相对比较麻烦,通过一个命令是完不成对应的操作的,需要通过两步操作才行。并且操作过程中需要使用 tar 工具进行打包,压缩使用的则是 xz 工具。
创建文件的步骤如下,首先 将需要压缩的文件打包 tar cvf xxx.tar files, 然后再对打包文件进行压缩 xz -z xxx.tar, 这样我们就可以得到一个打包之后的压缩文件了。
使用 xz 工具压缩文件的时候需要添加参数 -z
- # 语法:
- # 第一步
- $ tar cvf xxx.tar 要压缩的文件
- # 第二步, 最终得到一个xxx.tar.xz 格式的压缩文件
- $ xz -z xxx.tar
举例:
- # 查看目录文件信息
- [root@VM-8-14-centos ~/luffy]# ls
- get onepiece.txt robin.txt temp
-
- # 将文件 onepiece.txt, robin.txt 和目录 get 打包到 all.tar 中
- [root@VM-8-14-centos ~/luffy]# tar cvf all.tar onepiece.txt robin.txt get/
- onepiece.txt
- robin.txt
- get/
- get/link.lnk
- get/onepiece/
- get/onepiece/haha.txt
- get/link.txt
-
- # 查看目录文件信息, 多了一个打包文件 all.tar
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar get onepiece.txt robin.txt temp
-
- # 使用 xz 工具压缩打包文件 all.tar
- [root@VM-8-14-centos ~/luffy]# xz -z all.tar
-
- # 最终得到了压缩之后的打包文件 all.tar.xz
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar.xz get onepiece.txt robin.txt temp
解压缩的步骤和压缩的步骤相反,需要先解压缩,然后将文件包中的文件释放出来。
使用 xz 工具解压需要使用参数 -d。
- # 语法:
- # 第一步: 压缩包解压缩, 得到 xxx.tar
- $ xz -d xxx.tar.xz
- # 第二步: 将 xxx.tar 中的文件释放到当前目录
- $ tar xvf xxx.tar
举例:
- # 查看目录中文件信息, 有一个 all.tar.xz
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar.xz get onepiece.txt robin.txt temp
-
- # 将 all.tar.xz 解压缩, 得到 all.tar
- [root@VM-8-14-centos ~/luffy]# xz -d all.tar.xz
-
- # 查看目录文件, 得到了 all.tar
- [root@VM-8-14-centos ~/luffy]# ls
- all.tar get onepiece.txt robin.txt temp
-
- # 释放 all.tar 到当前目录
- [root@VM-8-14-centos ~/luffy]# tar xvf all.tar
- onepiece.txt
- robin.txt
- get/
- get/link.lnk
- get/onepiece/
- get/onepiece/haha.txt
- get/link.txt
作者: 苏丙榅
链接: https://subingwen.cn/linux/commpress/
来源: 爱编程的大丙
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。