tar create:如何避免在终端中显示“tar:从成员名称中删除前导‘/’”消息?

tar create:如何避免在终端中显示“tar:从成员名称中删除前导‘/’”消息?

关于tar命令

如果执行命令:

tar -czf numbers.tar.gz numbers

numbers.tar.gz文件是从numbers当前目录中创建的

但对于脚本目的- 通过测试 - 如果执行:

tar -czf ~/numbers.tar.gz /home/username/numbers
tar -czf /home/username/numbers.tar.gz /home/username/numbers

两个命令工作符合预期,但总是出现以下消息:

  • “tar:从成员名称中删除前导‘/’”

发生这种情况是因为至少有一条路径 - 在这种情况下,两者都具有/包含该/字符。我知道它是不是一个错误,但很好奇

问题

  • 如何避免在终端中显示“tar:从成员名称中删除前导‘/’”消息?

我假设它是信息或者警告消息和脚本目的需要它定义创建路径tar.gz和压缩源directory- 我不想在终端中看到该消息。有可能吗?有什么选择?

答案1

将绝对路径作为存档成员是一个坏主意。这就是为什么 GNU实际上默认tar删除了首字母(从存档成员名称和硬链接目标(如果有)中)。/

如果您很乐意tar进行剥离但想删除警告,您可以自己进行剥离:

tar -C / -czf ~/numbers.tar.gz home/username/numbers

或者:

tar -C /home/username -czf ~/numbers.tar.gz numbers

对于存档成员,应numbers/file改为home/username/numbers/file.

您可以告诉不要使用/tar进行剥离,在这种情况下您将成为存档成员。--absolute-names-P/home/username/numbers/file

提取时,大多数tar实现也会默认删除该前导/作为安全措施。如果您从目录中提取它/tmp/test,则文件将被提取,无论/tmp/test/home/username/numbers/file它们是否存储在存档中为home/username/numbers/file/home/username/numbers/file,除非您再次传递-P/选项(尽管如果您确实想要路径,则--absolute-names执行 acd /或传递 a会更有意义-C /被解释为相对于根,与绝对路径相同)。

相关内容