tar 解压(tar 解压缩命令tar.gz)

压缩和解压缩是最常见的日常操作,在Linux系统中,常见压缩格式有十几种,比如:”.zip”、”.gz”、”.bz2″、“tar”、”.tar.gz”、”.tar.bz2″等,其中zip格式最为通用,它也是本文的主角。

tar 解压(tar 解压缩命令tar.gz)
压缩 zip

压缩文件

zip archive.zip file1 file2 file3

压缩目录

zip -r archive.zip folder1/ folder2/ folder3/

如果想排除指定目录或者文件,那么需要注意其中的陷阱,假设workspace目录结构如下所示:

# tree workspaceworkspace├── 1│?? ├── 11.txt│?? └── 12.txt├── 2│?? ├── 21.txt│?? └── 22.txt

现在我想压缩workspace目录,但是排除目录1和它下面所有的文件,对于zip命令来说可以使用 -x 选项排除文件和目录,能够想到的方法包括:

zip -r workspace1.zip workspace/ -x workspace/1/*zip -r workspace2.zip workspace/ -x ‘workspace/1/*’zip -r workspace3.zip workspace/ -x workspace/1/zip -r workspace4.zip workspace/ -x workspace/1

首先给出答案,然后给出解释吧。不得不说,确实有点烦躁。无论如何压缩完记得使用unzip -t 检查一下内容是否正确。

提示:如果想排除多个文件或者目录,直接以相同的格式附在后面即可。

zip -r workspace1.zip workspace/ -x ‘workspace/1/*’

下面来看一下这4种写法的区别:

// 方法1:仅排除目录1中的所有文件,目录1保留[root@almalinux ~]# zip -r workspace1.zip workspace/ -x workspace/1/* adding: workspace/ (stored 0%) adding: workspace/1/ (stored 0%) adding: workspace/2/ (stored 0%) adding: workspace/2/21.txt (deflated 99%) adding: workspace/2/22.txt (stored 0%)[root@almalinux ~]# unzip -l workspace1.zipArchive: workspace1.zip Length Date Time Name——— ———- —– —- 0 11-21-2022 21:43 workspace/ 0 11-21-2022 21:44 workspace/1/ 0 11-21-2022 21:44 workspace/2/ 1555 11-21-2022 21:44 workspace/2/21.txt 19 11-21-2022 21:44 workspace/2/22.txt——— ——- 1574 5 files // 方法2:排除目录1和目录1中的文件,绝大多数情况下这正是我们所期望的[root@almalinux ~]# zip -r workspace2.zip workspace/ -x ‘workspace/1/*’ adding: workspace/ (stored 0%) adding: workspace/2/ (stored 0%) adding: workspace/2/21.txt (deflated 99%) adding: workspace/2/22.txt (stored 0%)

从中可以得出以下结论:如果想要排除某个目录以及它下面的所有文件,那么必须添加 引号’ 和 星号*,例如:方法2:zip -r workspace2.zip workspace/ -x ‘workspace/1/*’

// 方法3:本意是想排除目录1,但是却不能排除目录1下面的文件,因此相当于啥也没干。// 如果不加引号,但是有/,那么与workspace4.zip相比少了adding: workspace/1/ (stored 0%)[root@almalinux ~]# zip -r workspace3.zip workspace/ -x workspace/1/ adding: workspace/ (stored 0%) adding: workspace/1/11.txt (deflated 19%) adding: workspace/1/12.txt (deflated 55%) adding: workspace/2/ (stored 0%) adding: workspace/2/21.txt (deflated 99%) adding: workspace/2/22.txt (stored 0%)[root@almalinux ~]# unzip -l workspace3.zipArchive: workspace3.zip Length Date Time Name——— ———- —– —- 0 11-21-2022 21:43 workspace/ 21 11-21-2022 21:43 workspace/1/11.txt 20 11-21-2022 21:44 workspace/1/12.txt 0 11-21-2022 21:44 workspace/2/ 1555 11-21-2022 21:44 workspace/2/21.txt 19 11-21-2022 21:44 workspace/2/22.txt——— ——- 1615 6 files:// 方法4:实际的意思是想排除文件1,而不是目录1,但是没有文件1,因此相当于什么也没干。[root@almalinux ~]# zip -r workspace4.zip workspace/ -x workspace/1 adding: workspace/ (stored 0%) adding: workspace/1/ (stored 0%) adding: workspace/1/11.txt (deflated 19%) adding: workspace/1/12.txt (deflated 55%) adding: workspace/2/ (stored 0%) adding: workspace/2/21.txt (deflated 99%) adding: workspace/2/22.txt (stored 0%)[root@almalinux ~]# unzip -l workspace4.zipArchive: workspace4.zip Length Date Time Name——— ———- —– —- 0 11-21-2022 21:43 workspace/ 0 11-21-2022 21:44 workspace/1/ 21 11-21-2022 21:43 workspace/1/11.txt 20 11-21-2022 21:44 workspace/1/12.txt 0 11-21-2022 21:44 workspace/2/ 1555 11-21-2022 21:44 workspace/2/21.txt 19 11-21-2022 21:44 workspace/2/22.txt——— ——- 1615 7 files// 对于方法3和4来说,虽然它们的压缩文件大小不一样,但是效果是一样的[root@almalinux ~]# ll workspace*.zip-rw-r–r– 1 root root 837 Nov 21 21:49 workspace1.zip-rw-r–r– 1 root root 685 Nov 21 21:49 workspace2.zip-rw-r–r– 1 root root 1039 Nov 21 21:51 workspace3.zip-rw-r–r– 1 root root 1191 Nov 21 21:53 workspace4.zip

从方法3和方法4可以看出:在某些场景下,目录后面加不加 / 表示的含义不同,例如这里不加 / 表示文件,加了/表示目录。

如果workspace目录下有一个空文件夹3

[root@almalinux ~]# mkdir workspace/3[root@almalinux ~]# tree workspaceworkspace├── 1│?? ├── 11.txt│?? └── 12.txt├── 2│?? ├── 21.txt│?? └── 22.txt└── 3

这时就可以看出 目录名3 后面加不加 / 的区别了。

// 排除文件3[root@almalinux ~]# zip -r workspace5.zip workspace/ -x workspace/3 adding: workspace/ (stored 0%) adding: workspace/1/ (stored 0%) adding: workspace/1/11.txt (deflated 19%) adding: workspace/1/12.txt (deflated 55%) adding: workspace/2/ (stored 0%) adding: workspace/2/21.txt (deflated 99%) adding: workspace/2/22.txt (stored 0%) adding: workspace/3/ (stored 0%)// 排除目录3[root@almalinux ~]# zip -r workspace6.zip workspace/ -x workspace/3/ adding: workspace/ (stored 0%) adding: workspace/1/ (stored 0%) adding: workspace/1/11.txt (deflated 19%) adding: workspace/1/12.txt (deflated 55%) adding: workspace/2/ (stored 0%) adding: workspace/2/21.txt (deflated 99%) adding: workspace/2/22.txt (stored 0%)

压缩为不超过指定大小的多个文件

可以使用 -s 选项 大小 创建指定大小的zip文件,单位可以包括 k (kilobytes), m (megabytes), g (gigabytes), 或者 t (terabytes).

zip -s 1g -r archivename.zip directory_name

还可以指定压缩比,压缩比越大文件越小,但是时间越长。

-压缩级别 压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。

解压缩 Unzip

检查压缩文件是否损坏

unzip -t somefile.zipNo errors detected in compressed data of somefile.zip

查看压缩文件的内容

unzip -l archive.zip

要查看文件的详细信息,如文件权限和存档文件的总大小,请使用 -Z 选项

unzip -Z archive.zip

解压缩文件

unzip archive.zip

解压缩到指定目录

unzip archive.zip -d /path/to/destination/folder

抑制 unzip 命令的输出 (-q)

unzip -q archive.zip

覆盖现有文件 (-o)

unzip -o archive.zip

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。