当前位置:   article > 正文

Linux-压缩命令_linux 压缩命令

linux 压缩命令

目录

1. tar

1.1 压缩 (.tar.gz .tar.bz2 .tgz)

1.2 解压缩 (.tar.gz .tar.bz2 .tgz)

2. zip

2.1 压缩 (.zip)

2.2 解压缩 (.zip)

3. rar

3.1 压缩 (.rar)

3.2 解压缩 (.rar)

4. xz

4.1 压缩(.tar.xz)

4.2 解压缩 (.tar.xz)


不管是在 Linux 还是其他操作系统中,关于数据的压缩和解压缩操作是经常被用到的。由于在 windows 平台文件的相关操作被傻瓜化了,到了 Linux 平台让好多小伙伴感觉有点束手无策,本篇文章中主要为大家讲解基于 Linux 的常用压缩包操作,格式包含:tar.gz, .tgz, .tar.bz2, .zip, .rar, .tar.xz。

1. tar

在 Linux 操作系统中默认自带两个原始的压缩工具分别是 gzip 和 bzip2, 但是它们都有先天的缺陷,不能打包压缩文件, 每个文件都会生成一个单独的压缩包, 并且压缩之后不会保留原文件, 这是一件叔能忍婶也不能忍的事情。

Linux 中自带一个打包工具,叫做 tar, 默认情况下该工具是不能进行压缩操作的,在这种情况下 tar 和 gzip, bzip2 就联姻了,各自发挥各自的优势,Linux 下最强大的打包压缩工具至此诞生。

我们在使用 tar 进行压缩和解压缩的时候,只需要指定相对用的参数,在其内部就会调用对应的压缩工具 gzip 或者 bzip2 完成指定的操作。

1.1 压缩 (.tar.gz .tar.bz2 .tgz)

如果使用 tar 完成文件压缩,涉及的参数如下,在使用过程中参数没有先后顺序:

  • c: 创建压缩文件
  • z: 使用 gzip 的方式进行文件压缩
  • j: 使用 bzip2 的方式进行文件压缩
  • v: 压缩过程中显示压缩信息,可以省略不写
  • f: 指定压缩包的名字

一般认为 .tgz 文件就等同于 .tar.gz 文件,因此它们的压缩方式是相同的。

  1. # 语法:
  2. $ tar 参数 生成的压缩包的名字 要压缩的文件(文件或者目录)
  3. # 备注: 关于生成的压缩包的名字, 建议使用标准后缀, 方便识别:
  4. - 压缩使用 gzip 方式, 标准后缀格式为: .tar.gz
  5. - 压缩使用 bzip2 方式, 标准后缀格式为: .tar.bz2

举例:使用 gzip 的方式进行文件压缩

  1. # 查看目录内容
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. get onepiece.txt robin.txt
  4. # 压缩目录中所有文件, 如果要压缩某几个文件, 直接指定文件名即可
  5. [root@VM-8-14-centos ~/luffy]# tar zcvf all.tar.gz *
  6. get/ # ....... 压缩信息
  7. get/link.lnk # ....... 压缩信息
  8. get/onepiece/ # ....... 压缩信息
  9. get/onepiece/haha.txt
  10. get/link.txt
  11. onepiece.txt
  12. robin.txt
  13. # 查看目录文件, 多了一个压缩文件 all.tar.gz
  14. [root@VM-8-14-centos ~/luffy]# ls
  15. all.tar.gz get onepiece.txt robin.txt

举例:使用 bzip2 的方式进行文件压缩

  1. # 查看目录内容
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. all.tar.gz get onepiece.txt robin.txt
  4. # 压缩目录中除 all.tar.gz 的文件和目录
  5. [root@VM-8-14-centos ~/luffy]# tar jcvf part.tar.bz2 get onepiece.txt robin.txt
  6. get/ # ....... 压缩信息
  7. get/link.lnk # ....... 压缩信息
  8. get/onepiece/ # ....... 压缩信息
  9. get/onepiece/haha.txt
  10. get/link.txt
  11. onepiece.txt
  12. robin.txt
  13. # 查看目录信息, 多了一个压缩文件 part.tar.bz2
  14. [root@VM-8-14-centos ~/luffy]# ls
  15. all.tar.gz get onepiece.txt part.tar.bz2 robin.txt

1.2 解压缩 (.tar.gz .tar.bz2 .tgz)

如果使用 tar 进行文件的解压缩,涉及的参数如下,在使用过程中参数没有先后顺序:

  • x: 释放压缩文件内容
  • z: 使用 gzip 的方式进行文件压缩,压缩包后缀为.tar.gz
  • j: 使用 bzip2 的方式进行文件压缩,压缩包后缀为.tar.bz2
  • v: 解压缩过程中显示解压缩信息
  • f: 指定压缩包的名字

使用以上参数是将压缩包解压到当前目录,如果需要解压到指定目录,需要指定参数 -C。 一般认为 .tgz 文件就等同于 .tar.gz 文件,解压缩方式是相同的。解压的语法格式如下:

  1. # 语法1: 解压到当前目录中
  2. $ tar 参数 压缩包名
  3. # 语法2: 解压到指定目录中
  4. $ tar 参数 压缩包名 -C 解压目录

举例:使用 gzip 的方式进行文件解压缩

  1. # 查看目录文件信息
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. all.tar.gz get onepiece.txt part.tar.bz2 robin.txt temp
  4. # 将 all.tar.gz 压缩包解压缩到 temp 目录中
  5. [root@VM-8-14-centos ~/luffy]# tar zxvf all.tar.gz -C temp
  6. get/ # 解压缩文件信息
  7. get/link.lnk # 解压缩文件信息
  8. get/onepiece/ # 解压缩文件信息
  9. get/onepiece/haha.txt # 解压缩文件信息
  10. get/link.txt
  11. onepiece.txt
  12. robin.txt
  13. # 查看temp目录内容, 都是从压缩包中释放出来的
  14. [root@VM-8-14-centos ~/luffy]# ls temp/
  15. get onepiece.txt robin.txt

举例:使用 bzip2 的方式进行文件解压缩

  1. # 删除 temp 目录中的所有文件
  2. [root@VM-8-14-centos ~/luffy]# rm temp/* -rf
  3. # 查看 luffy 目录中的文件信息
  4. [root@VM-8-14-centos ~/luffy]# ls
  5. all.tar.gz get onepiece.txt part.tar.bz2 robin.txt temp
  6. # 将 part.tar.bz2 中的文件加压缩到 temp 目录中
  7. [root@VM-8-14-centos ~/luffy]# tar jxvf part.tar.bz2 -C temp
  8. get/ # 解压缩文件信息
  9. get/link.lnk # 解压缩文件信息
  10. get/onepiece/ # 解压缩文件信息
  11. get/onepiece/haha.txt # 解压缩文件信息
  12. get/link.txt
  13. onepiece.txt
  14. robin.txt
  15. # 查看 temp 目录中的文件信息
  16. [root@VM-8-14-centos ~/luffy]# ls temp/
  17. get onepiece.txt robin.txt

2. zip

zip 格式的压缩包在 Linux 中也是很常见的,在某些版本中需要安装才能使用

  • Ubuntu
  1. $ sudo apt install zip # 压缩
  2. $ sudo apt install unzip # 解压缩
  • CentOS
  1. # 因为 centos 可以使用 root 用户登录, 基于 root 用户安装软件, 不需要加 sudo
  2. $ sudo yum install zip # 压缩
  3. $ sudo yum install unzip # 解压缩

2.1 压缩 (.zip)

使用 zip 压缩目录需要注意一点,必须要添加参数 -r, 这样才能将子目录中的文件一并压缩,如果要压缩的文件中没有目录,该参数就可以不写了。

另外使用 zip 压缩文件,会自动生成文件后缀.zip, 因此就不需要额外指定了。

  1. # 语法: 后自动添加压缩包后缀 .zip, 如果要压缩目录, 需要添加参数 r
  2. $ zip [-r] 压缩包名 要压缩的文件

举例:

  1. # 查看目录文件信息
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. get onepiece.txt robin.txt temp
  4. # 压缩目录 get 和文件 onepiece.txt robin.txt 得到压缩包 all.zip(不需要指定后缀, 自动添加)
  5. [root@VM-8-14-centos ~/luffy]# zip all onepiece.txt robin.txt get/ -r
  6. adding: onepiece.txt (stored 0%)
  7. adding: robin.txt (stored 0%)
  8. adding: get/ (stored 0%)
  9. adding: get/link.lnk (stored 0%) # 子目录中的文件也被压缩进去了
  10. adding: get/onepiece/ (stored 0%) # 子目录中的文件也被压缩进去了
  11. adding: get/onepiece/haha.txt (stored 0%) # 子目录中的文件也被压缩进去了
  12. adding: get/link.txt (stored 0%) # 子目录中的文件也被压缩进去了
  13. # 查看目录文件信息, 多了一个压缩包文件 all.zip
  14. [root@VM-8-14-centos ~/luffy]# ls
  15. all.zip get onepiece.txt robin.txt temp

2.2 解压缩 (.zip)

对应 zip 格式的文件解压缩,必须要使用 unzip 命令,和压缩的时候使用的命令是不一样的。如果压缩包中的文件要解压到指定目录需要指定参数 -d, 默认是解压缩到当前目录中。

  1. # 语法1: 解压到当前目录中
  2. $ unzip 压缩包名
  3. # 语法: 解压到指定目录, 需要添加参数 -d
  4. $ unzip 压缩包名 -d 解压目录

举例:

  1. # 查看目录文件信息
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. all.zip get onepiece.txt robin.txt temp
  4. # 删除 temp 目录中的所有文件
  5. [root@VM-8-14-centos ~/luffy]# rm temp/* -rf
  6. # 将 all.zip 解压缩到 temp 目录中
  7. [root@VM-8-14-centos ~/luffy]# unzip all.zip -d temp/
  8. Archive: all.zip
  9. extracting: temp/onepiece.txt # 释放压缩的子目录中的文件
  10. extracting: temp/robin.txt # 释放压缩的子目录中的文件
  11. creating: temp/get/
  12. extracting: temp/get/link.lnk
  13. creating: temp/get/onepiece/
  14. extracting: temp/get/onepiece/haha.txt # 释放压缩的子目录中的文件
  15. extracting: temp/get/link.txt
  16. # 查看 temp 目录中的文件信息
  17. [root@VM-8-14-centos ~/luffy]# ls temp/
  18. get onepiece.txt robin.txt

3. rar

rar 这种压缩格式在 Linux 中并不常用,这是 Windows 常用的压缩格式,如果想要在 Linux 压缩和解压这种格式的文件需要额外安装对应的工具,不同版本的 Linux 安装方式也是不同的。

  • Ubuntu
  1. # 执行在线下载命令即可
  2. $ sudo apt install rar
  • CentOS
  1. # 需要下载安装包, 官方地址: https://www.rarlab.com/download.htm
  2. # 从下载页面找到 Linux 版本的下载链接并复制链接地址, 使用 wget 下载到本地
  3. $ wget https://www.rarlab.com/rar/rarlinux-x64-6.0.0.tar.gz
  4. # 将下载得到的 rarlinux-x64-6.0.0.tar.gz 压缩包解压缩, 得到解压目录 rar
  5. $ tar zxvf rarlinux-x64-6.0.0.tar.gz
  6. # 将得到的解压目录移动到 /opt 目录中 (因为/opt软件安装目录, 移动是为了方便管理, 不移动也没事儿)
  7. # 该操作需要管理员权限, 我是使用 root 用户操作的
  8. $ mv ./rar /opt
  9. # 给 /opt/rar 目录中的可执行程序添加软连接, 方便命令解析器可以找到该压缩命令
  10. $ ln -s /opt/rar/rar /usr/local/bin/rar
  11. $ ln -s /opt/rar/unrar /usr/local/bin/unrar

该方法在任何版本的 Linux 系统中都适用

3.1 压缩 (.rar)

使用 rar 压缩过程中的注意事项和 zip 是一样的,如果压缩的是目录, 需要指定参 -r, 如果只压缩文件就不需要添加了。压缩过程中需要使用参数 a (archive), 压缩归档的意思。

rar 工具在生成压缩包的时候也会自动添加后缀,名字为.rar, 因此我们只需要指定压缩包的名字。

  1. # 文件压缩, 需要使用参数 a, 压缩包名会自动添加后缀 .rar
  2. # 如果压缩了目录, 需要加参数 -r
  3. # 语法:
  4. $ rar a 压缩包名 要压缩的文件 [-r]
  5. # 举例
  6. # 查看目录文件信息
  7. [root@VM-8-14-centos ~/luffy]# ls
  8. get onepiece.txt robin.txt temp
  9. # 压缩文件 onepiece.txt, robin.txt 和目录 get/ 到要是文件 all.rar 中
  10. [root@VM-8-14-centos ~/luffy]# rar a all onepiece.txt get/ robin.txt -r
  11. RAR 6.00 Copyright (c) 1993-2020 Alexander Roshal 1 Dec 2020
  12. Trial version Type 'rar -?' for help
  13. Evaluation copy. Please register.
  14. Creating archive all.rar
  15. Adding onepiece.txt OK
  16. Adding get/link.lnk OK # 子目录中的文件也被压缩了
  17. Adding get/onepiece/haha.txt OK # 子目录中的文件也被压缩了
  18. Adding get/link.txt OK # 子目录中的文件也被压缩了
  19. Adding robin.txt OK
  20. Adding get/onepiece OK
  21. Done
  22. [root@VM-8-14-centos ~/luffy]# ls
  23. all.rar get onepiece.txt robin.txt temp

3.2 解压缩 (.rar)

解压缩.rar 格式的文件的时候,可以使用 rar 也可以使用 unrar, 操作方式是一样的,需要添加参数 x, 默认是将压缩包内容释放到当前目录中,如果要释放到指定目录直接指定解压目录名即可,不需要使用任何参数。

  1. # 解压缩: 需要参数 x
  2. # 语法: 解压缩到当前目录中
  3. $ rar/unrar x 压缩包名字
  4. # 语法: 解压缩到指定目录中
  5. rar/unrar x 压缩包名字 解压目录

举例:

  1. # 查看目录文件信息
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. all.rar get onepiece.txt robin.txt temp
  4. # 删除 temp 目录中的所有文件
  5. [root@VM-8-14-centos ~/luffy]# rm temp/* -rf
  6. # 将 all.rar 中的文件解压缩到 temp 目录中
  7. [root@VM-8-14-centos ~/luffy]# rar x all.rar temp/
  8. RAR 6.00 Copyright (c) 1993-2020 Alexander Roshal 1 Dec 2020
  9. Trial version Type 'rar -?' for help
  10. Extracting from all.rar
  11. Extracting temp/onepiece.txt OK
  12. Creating temp/get OK
  13. Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
  14. Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
  15. Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
  16. Creating temp/get/onepiece OK
  17. Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
  18. Extracting temp/get/link.lnk OK # 子目录文件也被释放出来了
  19. Extracting temp/get/onepiece/haha.txt OK
  20. Extracting temp/get/link.txt OK
  21. Extracting temp/robin.txt OK
  22. All OK
  23. # 查看 temp 目录中文件信息
  24. [root@VM-8-14-centos ~/luffy]# ls temp/
  25. get onepiece.txt robin.txt

4. xz

.xz 格式的文件压缩和解压缩都相对比较麻烦,通过一个命令是完不成对应的操作的,需要通过两步操作才行。并且操作过程中需要使用 tar 工具进行打包,压缩使用的则是 xz 工具。

4.1 压缩(.tar.xz)

创建文件的步骤如下,首先 将需要压缩的文件打包 tar cvf xxx.tar files, 然后再对打包文件进行压缩 xz -z xxx.tar, 这样我们就可以得到一个打包之后的压缩文件了。

使用 xz 工具压缩文件的时候需要添加参数 -z

  1. # 语法:
  2. # 第一步
  3. $ tar cvf xxx.tar 要压缩的文件
  4. # 第二步, 最终得到一个xxx.tar.xz 格式的压缩文件
  5. $ xz -z xxx.tar

举例:

  1. # 查看目录文件信息
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. get onepiece.txt robin.txt temp
  4. # 将文件 onepiece.txt, robin.txt 和目录 get 打包到 all.tar 中
  5. [root@VM-8-14-centos ~/luffy]# tar cvf all.tar onepiece.txt robin.txt get/
  6. onepiece.txt
  7. robin.txt
  8. get/
  9. get/link.lnk
  10. get/onepiece/
  11. get/onepiece/haha.txt
  12. get/link.txt
  13. # 查看目录文件信息, 多了一个打包文件 all.tar
  14. [root@VM-8-14-centos ~/luffy]# ls
  15. all.tar get onepiece.txt robin.txt temp
  16. # 使用 xz 工具压缩打包文件 all.tar
  17. [root@VM-8-14-centos ~/luffy]# xz -z all.tar
  18. # 最终得到了压缩之后的打包文件 all.tar.xz
  19. [root@VM-8-14-centos ~/luffy]# ls
  20. all.tar.xz get onepiece.txt robin.txt temp

4.2 解压缩 (.tar.xz)

解压缩的步骤和压缩的步骤相反,需要先解压缩,然后将文件包中的文件释放出来。

使用 xz 工具解压需要使用参数 -d。

  1. # 语法:
  2. # 第一步: 压缩包解压缩, 得到 xxx.tar
  3. $ xz -d xxx.tar.xz
  4. # 第二步: 将 xxx.tar 中的文件释放到当前目录
  5. $ tar xvf xxx.tar

举例:

  1. # 查看目录中文件信息, 有一个 all.tar.xz
  2. [root@VM-8-14-centos ~/luffy]# ls
  3. all.tar.xz get onepiece.txt robin.txt temp
  4. # 将 all.tar.xz 解压缩, 得到 all.tar
  5. [root@VM-8-14-centos ~/luffy]# xz -d all.tar.xz
  6. # 查看目录文件, 得到了 all.tar
  7. [root@VM-8-14-centos ~/luffy]# ls
  8. all.tar get onepiece.txt robin.txt temp
  9. # 释放 all.tar 到当前目录
  10. [root@VM-8-14-centos ~/luffy]# tar xvf all.tar
  11. onepiece.txt
  12. robin.txt
  13. get/
  14. get/link.lnk
  15. get/onepiece/
  16. get/onepiece/haha.txt
  17. get/link.txt

作者: 苏丙榅
链接: https://subingwen.cn/linux/commpress/
来源: 爱编程的大丙
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/170489
推荐阅读
相关标签
  

闽ICP备14008679号