tar从成员名称中删除前导'/'

Heb*_*ing 13 linux tar

当我/dev/null向tar命令追加>时出现错误,有人知道第二个例子中发生了什么吗?

好:

 tar -cvf $kname /var/www
Run Code Online (Sandbox Code Playgroud)

坏:

 tar -cvf $kname /var/www > /dev/null

 error:tar: Removing leading `/' from member names
Run Code Online (Sandbox Code Playgroud)

Kar*_*ath 12

"好"版本也会显示您刚刚错过的相同消息.

如果您不喜欢该行为,请在手动中搜索"leading".第一击:

-P, --absolute-names
       don't strip leading '/'s from file names
Run Code Online (Sandbox Code Playgroud)

  • 注意:您可能不希望这样......只是忽略该消息. (7认同)
  • @parvus因为解压缩该文件会将其解压缩到它被覆盖的绝对路径中,可能会覆盖非常有价值的文件.没有前导斜线,它相对于./ (6认同)

ken*_*orb 6

这是因为你的文件($kname)具有领先优势/.

要解决此问题,您可以指定-C更改目录,而不是指定存档文件的完整路径.

  • 而`-P`作为一种解决方法,`-C`可能更符合您的要求. (4认同)

小智 5

最好在备份中保留没有“/”的文件并忽略错误消息。Tar 这样做是为了安全起见,因为如果您解压文件,它会自动将文件放回原始目录中。这可能很危险,大多数人都想避免这种情况。就个人而言,我很高兴它删除了“/”,然后您的还原将是相对的而不是绝对的目录路径。然后您可以手动将文件移动到正确的位置或不同的位置。只是张贴这个让人们知道并且不会无意中替换他们的原始文件。