代码之家  ›  专栏  ›  技术社区  ›  Thomaschaaf

文件是否有唯一的id?

  •  1
  • Thomaschaaf  · 技术社区  · 17 年前

    我有个问题 How do you track files in SMB with an application?

    2 回复  |  直到 9 年前
        1
  •  2
  •   Rutger Nijlunsing    17 年前

    答案总是“视情况而定”。“唯一id”是什么意思?如果文件的内容被更改,还是将它视为同一个文件,这个ID会改变吗?在Unix中,inode与设备一起定义“唯一id”,但即使内容发生更改,也会保留该id。

    如果您现在想知道什么与文件有关,可以在同一台计算机上使用inotify来了解文件(或其前身:dnotify)的情况。

    如果您需要让它跨机器访问,那么我假设samba将使用inotify获得通知并将其转换为SMB/CIFS事件,但我对此并不熟悉。

    如果您想要基于内容的id并因此使用哈希,则需要转到用户空间。例如,这正是Git(版本控制系统)所做的:它跟踪内容的散列以获得“唯一id”。

        2
  •  1
  •   Zifre    17 年前

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

    如果可以在后台运行守护进程,则可以使用 inotify 监视移动事件。

    如果不能这样做,可以使用inode编号(但是 能够 在文件移动时进行更改)。