我试图使该备份我的整个硬盘驱动器的软件。
我已经成功地编写代码从硬盘扇区读取原始数据。 不过,我想有增量备份。 为此,我需要知道的操作系统设置,文件的变化,一切都改变的制造。
我的问题是 -
使用FileSystemWatcher的和inotify的 ,我将能够知道在硬盘驱动器到每一个部门作出的每个改变? (OS设置等)
我编码在C ++为Linux和Windows。
(SAW关于这个问题#1这给了我一些想法)
我试图使该备份我的整个硬盘驱动器的软件。
我已经成功地编写代码从硬盘扇区读取原始数据。 不过,我想有增量备份。 为此,我需要知道的操作系统设置,文件的变化,一切都改变的制造。
我的问题是 -
使用FileSystemWatcher的和inotify的 ,我将能够知道在硬盘驱动器到每一个部门作出的每个改变? (OS设置等)
我编码在C ++为Linux和Windows。
(SAW关于这个问题#1这给了我一些想法)
inotify的是检测你的程序运行时,我猜FilySystemWatches是类似的变化。
解决方法之一是让每个扇区上的多重校验,并制作备份时,你比较已经改变了你必须校验到列表中,只备份块。
微软Windows FileSystemWatcher的机制比更有限的Linux的inotify的 ,但两者可能会做你的需要。 Linux的机制提供(可选)通知文件读取,这将导致“访问时间戳”进行更新。
然而,从应用程序的角度来看,弱点是由系统发出的所有文件修改启动你的程序得到加载(或卸载关机)不会被监视。 您的应用程序可能需要通过看很多文件的文件修改时间戳记,以确定更改的文件,这取决于监控您的目标水平。
这两种结构保持每个文件跟踪时的时间戳上次访问的文件。 如果正在更新的备份通知引起的触发,缺乏这样的通知Windows的机制将导致平台不匹配的现象。 Windows的机制也可能会由于缓冲区大小的限制通知。 下面是从一个真正的宝石文档 :
请注意,FileSystemWatcher对象不会引发错误 ,当事件被遗漏或者超出缓冲区大小事件时,由于与Windows操作系统的依赖。 为了保持从失踪事件,请遵循以下原则:
与InternalBufferSize财产增加缓冲区大小可以防止丢失文件系统更改事件。
避免看长文件名的文件。 考虑使用较短的名称重命名。
保持你的事件处理代码尽可能短。
至少你可以控制三分之二的这些的....