2012-04-29 148 views
0

我正在制作一个应用程序来保存某些文件的信息。我想知道跟踪文件的最佳方式是什么。我正在考虑使用文件的绝对路径,但如果文件被重命名,这可能会改变。我发现如果你运行ls -i,每个文件都有一个唯一的id(?)。可以使用唯一的文件ID吗?唯一文件ID?

+0

设备编号+索引节点号应该是唯一的。 – wildplasser

回答

2

inode的每个设备唯一的,但是,我不建议使用它,因为想象你的箱子崩溃,你的所有文件移动到一个新的文件系统现在所有的文件有新的ID。

这真的取决于你所选择的语言,但他们几乎都包括用于生成UUID的图书馆。尽管碰撞在理论上是可能的,但它确实是一个非问题。生成UUID会将其前置到您的文件的前面,并且您处于业务中。随着实现的增长,它还将允许您创建文件的HashTable索引,以便稍后快速查找。

0

的问题是,“跨什么独特之处?”

如果你在特定的时间点需要某个给定机器上唯一的东西,那么是的,inode号码+设备号码几乎总是唯一的 - 这些可以从stat()或类似的C,os.stat ()在python中。但是,如果删除文件并创建另一个文件,则可以重新使用inode编号。另外,两个不同的主机可能对于该设备,inodeo对是什么有完全不同的想法。

如果你需要的东西来描述文件的内容(这样两个文件具有相同的内容具有相同的ID),你可能会考虑的SHA或RIPEMD功能之一。这将是非常独特的 - 意外碰撞的可能性是天文数字低。

如果您需要独特的一些其他形式,请详细说明。