【发布时间】:2016-07-27 05:48:48
【问题描述】:
我正在为 Windows 操作系统开发备份应用程序。首先,我进行完整备份并将整个文件复制到备份媒体。接下来,在进行增量备份时,我只需要查找在进行上一次完整备份之后对文件所做的更改。为此,我需要确定同一文件的两个版本之间的块级或磁盘级更改。我检查了 FileSystemWatcher https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx 类,但它只在更改完成时通知我。它没有为我提供文件的块级更改。有没有其他方法可以做到这一点?
【问题讨论】:
-
您可能对此感兴趣:daemonology.net/bsdiff
-
大多数文件(办公文档、图像、视频等)不会就地修改,而是在保存时创建、写入新的临时文件,然后删除旧文件并重命名新文件。只有基于记录的应用程序(如数据库)会覆盖原地文件。
-
这可能不值得。想象一下每周(甚至每月)一次或两次增量备份的完整备份。对于任何增量备份已更改的每个文件,您都必须返回上一个完整备份,将该文件的旧版本从该备份复制到某个工作空间,然后将更改应用到每个和在完整备份之后进行的每个增量备份 - 然后将重新创建的文件的内容与您尝试备份的内容进行比较,以找到新的差异。这将至少 三倍 备份 IO 需求。
标签: c# c++ windows file filesystems