所以我正在尝试制作一个引用其他文件的脚本。即使文件移动,我也希望能够跟踪文件。所以我在想,如果我可以为文件分配一个唯一值,那么我可以通过搜索我分配给它的唯一值来找到文件的位置。
有一个更好的方法吗?
基本上我希望能够从它作为扩展属性的值中找到一个文件。但我不知道这是否可能。
任何帮助都会很棒。谢谢。
所以我正在尝试制作一个引用其他文件的脚本。即使文件移动,我也希望能够跟踪文件。所以我在想,如果我可以为文件分配一个唯一值,那么我可以通过搜索我分配给它的唯一值来找到文件的位置。
有一个更好的方法吗?
基本上我希望能够从它作为扩展属性的值中找到一个文件。但我不知道这是否可能。
任何帮助都会很棒。谢谢。
您可以使用 inode 编号(用 显示ls -i /some/file
),每个文件都是唯一的,并且在文件更改或移动时不会更改,除非您将文件移动到不同的分区。如果您不需要跟踪多个分区上的文件,那么这将是一个非常简单的解决方案。
要按 inode 编号查找文件,您可以使用find -inum <inode number>
如果你需要跨文件系统移动文件,你可以使用命令setfattr来设置文件的扩展属性,注意:你的内核必须能够做到这一点。没有一次性的命令来查找文件,但您可以创建一个简单的脚本来通过您的唯一键搜索文件。为你的文件设置一个类似于user.unique的键和你喜欢的字符串值,例如:n1234
setfattr -n user.unique -v n1234 yourfile
要检索值,您可以使用命令 getfattr
getfattr -n user.unique yourfile
或获取所有扩展文件属性:
getfattr -d yourfile
要测试您的内核是否能够处理文件系统类型的扩展属性:
zcat /proc/config.gz | grep FS_XATTR
要编写一个简单的脚本来使用扩展属性进行搜索,您可以参考这个Hack;在同一页面上,您可以阅读有关扩展属性的更多信息。