【问题标题】:Is there a way to identify that a file has been modified and moved?有没有办法识别文件已被修改和移动?
【发布时间】:2010-04-30 19:16:15
【问题描述】:

我正在编写一个应用程序,它对文件进行编目,并通过单独的“side-car”文件为它们赋予额外的元数据。如果通过我的程序对文件进行更改,那么它能够使它们与其相应的元数据文件之间的所有内容保持同步。但是,我正在尝试找出一种方法来处理在我的程序未运行时手动修改文件的人。

当我的程序启动时,它会扫描文件系统并将找到的文件与它之前记得的文件记录进行比较。在文件被删除或添加后更新是相当直接的。但是,如果文件被移动或重命名,那么我的程序会将其视为旧文件被删除,新文件被添加。但我不想松散文件与其元数据之间的关联。

我想我可以存储每个文件的哈希值,这样我就可以检查新找到的文件是否真的是以前已知的已移动或重命名的文件。但是,如果文件同时被移动/重命名和修改,那么哈希也不会匹配。

那么,即使在重命名、移动或修改后,我还能跟踪文件的其他唯一标识符吗?

【问题讨论】:

    标签: file filesystems


    【解决方案1】:

    文件没有唯一标识符。您可以使用的最好方法是启发式和差异比较方法。如果删除的文件和添加的文件之间的差异很小,那么这可能是修改 + 移动操作。也可能不是。

    git 有一个非常好的文件重命名/移动检测器。也许你可以从中借鉴一些想法。

    【讨论】:

    • 嗯,没那么重要。我只会将重命名/移动视为添加/删除,并告诉用户如果他们不想丢失元数据,他们需要使用我的工具来操作文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2021-10-16
    • 2011-09-14
    • 2017-10-25
    相关资源
    最近更新 更多