什么是tar --strip-components和zip --junk-paths以及Linux中的示例

时间:2020-02-23 14:40:34  来源:igfitidea点击:

如何使用tar --strip-components和zip --junk-paths从档案中删除绝对路径。
Tar是一个归档实用程序,不需要向Linux用户介绍。
在本文中,我将了解更多有关

  • tar --strip-components`

  • zip --junk-paths

这两个选项执行相同的任务,即在提取档案时剥离相对路径。

方法1:使用tar --strip-components剥离绝对路径

创建tar存档

首先,让我们创建一个存档。
在这个例子中,我在/tmp下创建了一个嵌套目录结构,我们可以使用tree命令进行检查。

# tree /tmp/dir1/
/tmp/dir1/
└── dir2
    └── dir3
        ├── file1
        ├── file2
        ├── file3
        ├── file4
        └── file5
2 directories, 5 files

我将使用" GZIP压缩"创建tar存档,并将其存储为/root作为myarchive.gz

# tar -czvf /root/myarchive.gz  /tmp/dir1/dir2/dir3

提取没有tar --strip-components的存档

默认情况下,tar存储文件的绝对路径。
我将在/extract下提取该存档内容

# tar -xzvf /root/myarchive.gz -C /extract/

没有tar --strip-components的提取

归档文件提取并"存储绝对路径",在大多数情况下可能不需要

# tree /extract/

使用tar --strip-components提取档案

  • 在此示例中,我们将在执行tar提取时"剥离绝对路径"

  • 提供带有--strip-components的数值,该数字表示执行提取时要剥离的pf路径数

  • 在此示例中,我们要从输出中剥离" 4个目录",因此我们将使用" --strip-components = 4"

  • 这里的-C DIR是指在执行任何操作之前更改为DIR

# tar -xzvf /root/myarchive.gz --strip-components=4 -C /extract

我的终端的摘录

用tar --strip-components提取

验证内容。
现在,提取档案文件后,我们没有绝对路径。

# ls -l /extract/

方法2:使用zip --junk-paths删除绝对路径

我们可以在Linux和Unix中使用zip命令执行类似的操作

创建不带--junk-paths的zip存档

首先让我使用/root下的BZIP2压缩myarchive.bz2创建一个zip压缩文件。

# zip -Z bzip2 /root/myarchive.bz2 /tmp/dir1/dir2/dir3/*

默认情况下,此处的归档文件还存储文件的绝对路径

提取zip存档

我们将使用unzip解压缩此档案并将其存储在/extract文件夹中

# unzip /root/myarchive.bz2 -d /extract/

不出所料,我们在/extract下有文件的绝对路径。

# tree /extract/

使用--junk-paths创建zip存档

现在,我们将删除文件的绝对路径,而仅通过将zip与--junk-paths一起使用来存储相对路径。
由于我们是使用bzip2压缩来创建zip归档文件,因此我们使用了-Z bzip2`。

# zip -Z bzip2 --junk-paths /root/myarchive.bz2 /tmp/dir1/dir2/dir3/*

从输出中我们可以看到,使用zip --junk-paths不再存储绝对路径。

提取zip存档

我们将使用unzip解压缩此档案,并将文件保存在/extract下。

# unzip /root/myarchive.bz2 -d /extract/

我们存档中的文件不再具有"绝对路径"

# ls -l /extract/

因此,我们可以将zip和" --junk-paths"一起使用,或者将tar和" --strip-components"一起使用,以删除绝对路径