按扩展属性值跟踪文件

时间:2012-05-18 23:01:44

标签: shell command-line terminal command command-prompt

所以我试图创建一个引用其他文件的脚本。我希望能够跟踪文件,即使它移动。所以我在考虑是否可以为文件分配一个唯一值,然后通过搜索我指定的唯一值来查找文件的位置。

有更好的方法吗?

基本上我希望能够从它具有扩展属性的值中找到一个文件。但我不知道这是否可能。

任何帮助都会很棒。感谢。

2 个答案:

答案 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;在同一页面上,您可以阅读有关扩展属性的更多信息。