【发布时间】:2014-11-20 20:25:19
【问题描述】:
我有一个文件列表为:<volume name>:<directory inode>:<file name>。例如,:Foo:33103829:IMG_2837.JPG。如何获取文件路径?
我在这里找到了an answer,这看起来正是我想要的,但我无法让它工作。 The answer 说在 OS X 上有一个“魔法”目录/.vol 可以在 inode 上运行。 ls 告诉我/.vol
存在,但不包含任何内容,即使被 inode 访问:
# verify that /.vol exists:
~$ ls -ld /.vol
drwxr-xr-x@ 2 root wheel 68 May 18 2009 /.vol/
# get inode of volume Foo
~$ ls -id /Volumes/Foo
32659974 /Volumes/Foo@
# access volume Foo by idnode
~$ ls /.vol/32659974
ls: /.vol/32659974: No such file or directory
# access volume Foo by idnode
~$ cd /.vol/32659974
cd: /.vol/32659974: No such file or directory
# access volume by inode using GetFileInfo
~$ GetFileInfo /.vol/32659974
GetFileInfo: could not refer to file (-43)
【问题讨论】:
-
您在该问题中看到
GetFileInfo答案了吗?即使 accepted 答案对您不起作用(不足为奇,因为它特定于目录 - 并且不会隐藏该限制)并不意味着其他人不值得研究。 -
顺便说一句,虽然对于目录来说,假设每个 inode 只存在一个路径是安全的,但对于文件来说,这根本不是一个安全的假设。
-
嗨@CharlesDuffy,GetFileInfo 是等效的,因为它还依赖于
/.vol工作。我可以将其添加到我的问题中。 -
在我的情况下,我正在尝试有条不紊地进行,所以第 1 步是验证我可以通过它的 inode 访问一个卷(根据另一个答案中的示例),我不能。如果可以,我会尝试访问该目录,如果可以,我会按文件名访问该文件,我有。