利索能及
我要发布
收藏
专利号: 2016108744964
申请人: 上海斐讯数据通信技术有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-12-18
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

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”:”<配置的监听端口>”“, ”:{"user":"","syncFloder":"<提供给R2的目录>"}}。

3.根据权利要求1所述的路由器间双向同步的实现方法,其特征在于,所述config2的文件配置为:{“config”:{"serverURL":"http://xx.xx.xx.xx:port/","key":"","localFloder":"/mnt/sda/",”syncTime”:”<同步的时间点>”}}。

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的同步目录是否变化的程序。