关于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 /
被解释为相对于根,与绝对路径相同)。