1.一种路由器间双向同步的实现方法,其特征在于,包括以下步骤:S1,在路由器R1的web服务器上添加插件A和插件B,插件A和插件B分别用于提供认证、产生key和支持webdav协议,web服务器还提供UI端配置监听端口,提供保存config文件,提供认证的key和账号以及可同步目录的config1;
S2,路由器R2提供UI端设定访问路由器R1提供的URL请求地址,提供输入在路由器R1上注册得到的key,提供设定路由器R2端监控的目录config2,提供同步的时间点设置;
S3,路由器R2提供监控目录变化和针对变化作处理的程序p2;
S4,路由器p2程序由多个线程组成,多个线程之间协同配合完成路由器间数据的双向同步;
其中,所述程序p2的运行步骤如下:
步骤一,程序初始化,并读取config2文件;
步骤二,进行相应的环境变量设定,从而执行线程A或线程B或线程C;
所述线程A的执行过程如下:
S1,线程A初始化;
S2,监控目录;
S3,储存变化事件链表;
S4,判断链表是否被lock,若链表被lock,则等待lock释放,释放后进行目录更新;若链表未被lock,则直接进行目录更新;
所述线程B的执行过程如下:
S1,线程B初始化;
S2,判断同步时间,即判断路由器R1和路由器R2的时间是否同步,若时间同步,则转至判断事件链表是否被lock;若时间不同步,表明线程阻塞,直到时间段正确,则转至判断事件链表是否被lock;
S3,事件链表未被lock,则转至判断线程C是否在同步,不论线程C是否在同步均要遍历链表依次处理事件;
所述线程C的执行过程如下:
S1,线程C初始化;
S2,判断同步时间,即判断路由器R1和路由器R2的时间是否同步,若时间同步,则每间隔5秒查询路由器R1的同步目录,并对比5秒内路由器R1的同步目录是否变化;若时间不同步,表明线程阻塞,直到时间段正确,则每间隔5秒查询路由器R1的同步目录,并对比5秒内路由器R1的同步目录是否变化;
S3,若路由器R1的同步目录变化,则判断线程B是否在本地同步,若线程B未在本地同步,则将路由器R1更新的文件下载至本地;若线程B在本地同步,则等待线程B同步完成。
2.根据权利要求1所述的路由器间双向同步的实现方法,其特征在于,所述config1的文件配置为:{“port”:”<配置的监听端口>”“,
3.根据权利要求1所述的路由器间双向同步的实现方法,其特征在于,所述config2的文件配置为:{“config”:{"serverURL":"http://xx.xx.xx.xx:port/
4.根据权利要求1所述的路由器间双向同步的实现方法,其特征在于,所述多个线程包括线程A、线程B和线程C,线程A用于监控目录的变化,线程B用于处理监控的事件,线程C用于查询路由器R1的同步目录文件是否变化。
5.根据权利要求1所述的路由器间双向同步的实现方法,其特征在于,所述线程A的储存事件的结构体如下:Typedef struct actionEvent{Char action[20];//文件动作事件Char*oldName;//旧文件名
Char*newName;//新文件名
Char*oldFolder;//旧目录
Char*nerFolder;//新目录
}
事件变化列表如下
{“modify”:”<文件被修改>”,
“addfile”:”<新增文件>”,
“move”:”<移动文件>”,
“rename”:”<文件被重命名>”,
“delete”:”<文件被删除>”,
“dragfile”:”<文件被拖拽>”,
}。
6.基于权利要求1-5任一项所述的路由器间双向同步的实现方法的系统,其特征在于,包括路由器R1和路由器R2,路由器R1作为主路由器,路由器R2作为从路由器,路由器R1和R2均支持储存设置,路由器R1内含web服务器和配置访问端口的接口;路由器R1提供注册功能,支持注册后提供唯一的认证key,便于接入设备的认证;路由器R1提供对webdav协议的支持;路由器R1提供配置同步目录的接口,路由器R2提供本地同步目录的配置接口,路由器R2提供监控本地文件变化的程序;路由器R2提供处理监控本地文件的动作进行响应的程序;路由器R2提供查询路由器R1的同步目录是否变化的程序。