2009-06-13 103 views

回答

2

答案一如既往'取决于'。 'unique id'是什么意思?如果文件内容改变,这个id会改变吗,还是你认为这个文件是同一个文件?在Unix中,inode与设备一起定义了“唯一标识符”,但即使内容发生更改也会保留该标识符。

如果您现在想要触摸某个文件,可以在同一台机器上使用inotify来了解文件(或其前身:dnotify)会发生什么情况。

如果你需要跨机器,那么我假设桑巴会使用inotify获得通知并将其转换为SMB/CIFS事件,但我并不熟悉这一点。

如果你想要一个基于内容的ID并因此使用散列,你需要去用户空间。例如,这正是Git(版本控制系统)的作用:它跟踪内容的哈希以具有“唯一标识”。

1

如果文件不会被移动,您可以使用散列。

如果您可以让后台进程在后台运行,您可以使用inotify编写程序来监视移动事件。

如果你不能这样做,你可以使用inode号码(但可能更改文件移动)。