我目前正在开发一个 Rust 程序,我需要通过文件的 inode 和卷序列号检索文件的路径,类似于 Xcode 中的
GetFileInfo
实用程序的工作方式。
例如,在 macOS 中,创建文件 (
hello.txt
) 并重命名 (mv hello.txt world.txt
) 后,您可以使用 GetFileInfo
检索新文件路径:
$ /usr/bin/GetFileInfo /.vol/16777229/25468225
file: "/Users/user/world.txt"
可以从 stat 命令的输出中检索文件的 inode 和卷序列号:
$ stat hello.txt
16777229 25468225 -rw-r--r-- 1 user staff 0 6 "May 13 22:09:46 2024" "May 13 22:09:45 2024" "May 13 22:09:45 2024" "May 13 22:09:45 2024" 4096 8 0 hello.txt
我想在 Rust 中实现类似的功能。是否有 Rust 库或库组合可以帮助我实现这一目标?如果没有,在 Rust 中实现此功能的最佳方法是什么?
任何帮助或指导将不胜感激。谢谢!
我找到了一个解决方案并创建了一个实现跨平台功能的 Rust crate。简而言之,在 Windows 上,它使用
GetFileByID
,在 macOS 上,它使用 .vol
目录和 fcntl
与 F_GETPATH
。
您可以在这里找到箱子:refind。