带有和不带有 --absolute-names 选项的 tar 命令

带有和不带有 --absolute-names 选项的 tar 命令

我目前正在使用 ubuntu 20.04 机器。我尝试使用以下命令使用 tar 命令创建压缩档案,

sudo tar -caf /opt/archive.tar.bz2 /home/bob/databases/

我当前的工作目录是/主页/鲍勃. 使用时-P(--绝对名称)选项,压缩档案的内容如下,

/home/bob/databases/
/home/bob/databases/file00
/home/bob/databases/file01
/home/bob/databases/file02

如果没有 -P 选项,则内容如下,

home/bob/databases/
home/bob/databases/file00
home/bob/databases/file01
home/bob/databases/file02

这个选项到底是如何工作的?如果我想将基本目录更改为bob/数据库/

答案1

如果要从/home路径中省略,则更改到该目录(-C--directory):

tar -caf /opt/archive.tar.bz2 -C /home bob/databases

或者:

cd /home
tar -caf /opt/archive.tar.bz2 bob/databases

这个-P选项很少需要(事实上,我想说这是那些你已经知道为什么需要它的选项之一如果你根本不需要它)。从问题的输出中可以明显看出它的作用 - 它保留路径中的前导斜杠以使其成为绝对路径,而tar档案通常具有相对路径。然后,如果您提取包含绝对路径的档案(同时使用此选项),它将把文件提取到这些路径,而不是相对于当前目录。

答案2

此外@muru 的回答

在备份和恢复整个系统挂载点时,保存绝对路径/名称特别方便(例如 home 分区) ... 这是该选项的一个用例-P

如果我想将基目录更改为,该怎么办bob/databases/

tar也可以选择使用样式--transform来更改文件名/路径...因此,您始终可以执行这样的操作:seds/match/substitute/

$ ls -l /home/ubuntu/test/
total 0
-rw-r--r-- 1 ubuntu ubuntu 0 May  1 08:11 file1
-rw-r--r-- 1 ubuntu ubuntu 0 May  1 08:11 file2
-rw-r--r-- 1 ubuntu ubuntu 0 May  1 08:11 file3
$
$ tar -caf test.tar --transform 's|^home\/||' /home/ubuntu/test/
$
$ tar -tf test.tar
ubuntu/test/
ubuntu/test/file3
ubuntu/test/file2
ubuntu/test/file1

相关内容