所以我试图创建一个引用其他文件的脚本。我希望能够跟踪文件,即使它移动。所以我在考虑是否可以为文件分配一个唯一值,然后通过搜索我指定的唯一值来查找文件的位置。
有更好的方法吗?
基本上我希望能够从它具有扩展属性的值中找到一个文件。但我不知道这是否可能。
任何帮助都会很棒。感谢。
答案 0 :(得分:1)
您可以使用inode编号(显示为ls -i /some/file
),该编号对于每个文件都是唯一的,并且在文件更改或移动时不会更改,除非您将文件移动到其他分区。如果您不需要跟踪多个分区上的文件,那么这将是一个非常简单的解决方案。
要按inode编号查找文件,您可以使用find -inum <inode number>
答案 1 :(得分:0)
如果需要跨文件系统移动文件,可以使用命令setfattr将扩展属性设置为file,注意:您的内核必须能够执行此操作。 没有一次性命令来查找文件,但您可以创建一个简单的脚本来按唯一键搜索文件。 要将类似于 user.unique 的键和字符串值设置为yourfile,例如: 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;在同一页面上,您可以阅读有关扩展属性的更多信息。