首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >增量备份:如何跟踪文件删除

增量备份:如何跟踪文件删除
EN

Stack Overflow用户
提问于 2011-03-25 22:54:13
回答 3查看 859关注 0票数 1

我有一个异地备份解决方案,它在C++上运行,将文件拆分成块,并使用SQLITE3数据库上的md5哈希跟踪这些块。并且它将块与数据库一起传输到远程站点。

因此,当我要执行恢复时,它会查询SQLITE3数据库并相应地恢复数据块。

当第一个备份运行时,它会创建一个名为base_backup的大表。随后的每个文件更改或新文件都将作为新记录添加到新表中。如果我想进行恢复,我会查询base_backup表以及所有差异,然后恢复文件。

备份的运行方式是在给定文件夹中的所有文件中扫描存档位,如果清除了该位,则验证数据库中是否已存在记录,并决定是否对其进行备份。

我的问题是,如果一个文件在本地计算机上被删除,我如何跟踪它并相应地更新异地备份?因为当我进行恢复时,我不想恢复所有的垃圾文件。有没有办法知道文件是否已从文件夹中删除?我不想从数据库运行验证检查,因为这将花费太长的时间。

EN

回答 3

Stack Overflow用户

发布于 2011-03-25 22:58:23

使用IN_DELETEinotify

票数 1
EN

Stack Overflow用户

发布于 2011-03-26 00:51:07

创建服务以监视目录(使用FindFirstChangeNotification或ReadDirectoryChangesW)

票数 0
EN

Stack Overflow用户

发布于 2011-03-28 21:38:30

您可以向数据库中添加一条新信息,其中列出了在上次备份期间存在的文件。然后,即使文件没有更改,在备份过程中也会生成一个新的(小)条目,表明该文件仍然存在。

从过去的给定日期还原备份时,请仅选择具有指定其在上次备份期间存在的条目的文件。

例如,像这样的一对表可能会起作用:

代码语言:javascript
运行
复制
Path(text)    BackupIndex(int)
path/to/file1  1
path/to/file2  1
path/to/file1  2

请注意,path/to/file2没有出现在备份#2中,因为它在备份过程中不在目录中(它一定已被删除)。

代码语言:javascript
运行
复制
BackupIndex(int)    Timestamp(timestamp)
1                   2011-03-12 7:42:31 UTC
2                   2011-03-20 8:21:56 UTC

如果有人想要恢复为3月15日存在的文件,您可以查看备份索引表,发现备份#1是最新的,并从路径表中查找备份1中存在的所有路径。

因此,基本上,您是在推迟决定文件是否已被删除到恢复操作,而不是备份操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5434146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档