什么是tar --strip-components和zip --junk-paths以及Linux中的示例
如何使用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"一起使用,以删除绝对路径