更改Windows(NTFS)中块的日志

更改Windows(NTFS)中块的日志,windows,ntfs,block,journal,Windows,Ntfs,Block,Journal,我已经编写了一个备份工具,它能够为Windows备份卷的文件和映像。要检测哪些文件已更改,我使用Windows更改日志。我已经使用卷影复制功能对文件和卷映像进行了一致的复制 为了检测哪些块已经改变,我现在使用哈希。这意味着整个卷必须读取一次(因为要查看哪个块已更改,必须计算所有块的哈希)。 集成到Windows 7中的备份能够创建增量卷映像,而无需检查所有块。我找不到块级更改日志的API 有人知道如何获取这些信息吗? (我愿意深入研究NTFS内部——甚至阅读和解析特殊文件)我认为块级更改信息在任

我已经编写了一个备份工具,它能够为Windows备份卷的文件和映像。要检测哪些文件已更改,我使用Windows更改日志。我已经使用卷影复制功能对文件和卷映像进行了一致的复制

为了检测哪些块已经改变,我现在使用哈希。这意味着整个卷必须读取一次(因为要查看哪个块已更改,必须计算所有块的哈希)。 集成到Windows 7中的备份能够创建增量卷映像,而无需检查所有块。我找不到块级更改日志的API

有人知道如何获取这些信息吗?
(我愿意深入研究NTFS内部——甚至阅读和解析特殊文件)

我认为块级更改信息在任何地方都不可用。最有可能的是,Windows 7集成备份所做的是安装一个类似于某些备份产品和防病毒软件的软件。筛选器驱动程序可以截获所有文件系统调用,并通过这种方式知道哪些块已更改。如果您这样做,您基本上可以构建您自己的变更日志,该日志在块级别工作,但仅适用于您感兴趣的文件


我真的很想知道一个更好的答案。

当你说Windows更改日志时,我认为你指的是NTFS USN?看起来很像Windows 7备份使用VSC和NTFS USN的组合来检测更改并创建增量映像,就像您已经在做的一样。

创建(筛选)驱动程序就可以了。问题是,这是一个开源项目,我负担不起(或者更好:我不想负担得起)购买(64位)windows驱动程序证书的500美元年费。我看到的唯一选项是创建一个卷影副本,然后以某种方式找出windows在该卷影副本中保存的内容。这有两个缺点:无法删除卷影副本(占用空间),并且没有关于卷影副本(磁盘格式)的文档可用。人们必须对整个过程进行逆向工程,根本不知道其中涉及到费用。卷影复制方法的另一个问题是,根据所使用的VSS提供程序,实现可能会有所不同。(重新启动)到此讨论有点晚,但通过在块而不是文件上备份,与维护/计算哈希的成本相比,可以获得多少好处?只是好奇。@PeterKrnjevic该软件(UrBackup)实际上同时执行文件和映像备份,并且不查看未更改的文件进行增量文件备份(使用Windows更改日志)。对于映像备份,哈希基本上是免费的(一旦您将数据读入内存,哈希操作就没有那么昂贵),而且通常不会在映像备份之间更改卷上的所有内容,因此这绝对是值得的。@UrOni:您是说映像备份会将所有内容读入内存吗?现在使用多TB驱动器不是需要很长时间吗?