本發(fā)明涉及智能設(shè)備領(lǐng)域,尤其涉及一種多路由器單向同步方法及系統(tǒng)。
背景技術(shù):
伴隨Wi-Fi技術(shù)的飛速發(fā)展,支持互聯(lián)互通的智能設(shè)備越來越多,以智能手機(jī)、平板電腦和智能家居產(chǎn)品為代表的各類連網(wǎng)設(shè)備也快速興起,這不僅為家中的Wi-Fi網(wǎng)絡(luò)帶來了諸多挑戰(zhàn),更對支撐“家庭網(wǎng)絡(luò)樞紐”作用的無線路由器提出了較高的要求。目前市場上已經(jīng)出現(xiàn)智能路由器,所謂智能路由器,像個(gè)人電腦一樣,具有獨(dú)立的操作系統(tǒng),用戶可自行安裝控制帶寬,上網(wǎng)加速、過濾視頻廣告等,遠(yuǎn)不局限于無線上網(wǎng)的功能。比如它將一個(gè)單一功能性的產(chǎn)品變成了一個(gè)平臺,在這個(gè)平臺上面,可以安裝app插件來增加新的功能。
現(xiàn)有技術(shù)中通過對智能路由器增加USB接口,連接移動(dòng)硬盤或U盤等存儲設(shè)備,使其具有存儲功能。然而處于異地的智能路由器存儲的文件產(chǎn)生變動(dòng),如何實(shí)現(xiàn)向本地的路由器進(jìn)行上傳,以實(shí)現(xiàn)路由器間單向同步,現(xiàn)有soho路由器并未給出具體方案解決該問題。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明提供一種多路由器單向同步方法及系統(tǒng),能夠?qū)崿F(xiàn)當(dāng)從路由器產(chǎn)生文件變化時(shí),從路由器向主路由器進(jìn)行單向同步。
本發(fā)明提供的技術(shù)方案如下:
本發(fā)明公開了一種多路由器單向同步方法,用于從路由器向主路由器進(jìn)行單向同步,包括步驟:S100:判斷當(dāng)前時(shí)間是否包括在預(yù)設(shè)同步時(shí)間段;S200:當(dāng)所述當(dāng)前時(shí)間包括在所述預(yù)設(shè)同步時(shí)間段時(shí),進(jìn)一步判斷事件鏈表是否為鎖定狀態(tài);S300:當(dāng)所述事件鏈表不是鎖定狀態(tài)時(shí),遍歷所述事件鏈表,依次將所述事件鏈表中的變化事件同步到主路由器。
本發(fā)明中主路由器作為web服務(wù)器,從路由器配置為客戶端,通過在預(yù)設(shè)同步時(shí)間段向主路由器同步變化事件,實(shí)現(xiàn)主路由器集中收集和管理資料, 有效的解決路由器間單向同步的問題。
進(jìn)一步優(yōu)選的,還包括步驟:S520:實(shí)時(shí)監(jiān)控是否有所述變化事件生成;S521:當(dāng)有所述變化事件生成時(shí),將所述變化事件儲存至所述事件鏈表;S522:判斷所述事件鏈表是否為鎖定狀態(tài);若是,執(zhí)行下一步,否則,重復(fù)執(zhí)行步驟S522,等待所述事件鏈表釋放;S523:當(dāng)所述事件鏈表不為鎖定狀態(tài)時(shí),更新所述事件鏈表。
本發(fā)明中存儲的事件鏈表中用于儲存從路由器的存儲目錄中產(chǎn)生的變化事件,并在事件鏈表不為鎖定狀態(tài)時(shí)進(jìn)行更新,為從路由器向主路由器單向同步提供了數(shù)據(jù)支持。
進(jìn)一步優(yōu)選的,所述事件鏈表中的所述變化事件包括文件修改事件、文件新增事件、文件移動(dòng)事件、文件重命名事件、文件刪除事件以及文件拖拽事件中的任意一個(gè)或多個(gè)。
本發(fā)明可針對從路由器存儲目錄下的多種變化事件進(jìn)行同步,便于主路由器全面掌握和收集各從路由器的情況。
進(jìn)一步優(yōu)選的,所述步驟S300“依次將所述事件鏈表中的變化事件同步到主路由器”進(jìn)一步包括以下至少一個(gè)步驟:S301:當(dāng)所述事件鏈表中的變化事件為文件修改事件時(shí),上傳文件修改信息以及修改后的文件至主路由器;S302:當(dāng)所述事件鏈表中的變化事件為文件新增事件時(shí),上傳文件新增信息以及新增文件至主路由器;S303:當(dāng)所述事件鏈表中的變化事件為文件移動(dòng)事件時(shí),上傳文件移動(dòng)信息至主路由器;S304:當(dāng)所述事件鏈表中的變化事件為文件重命名事件時(shí),上傳文件重命名信息以及重命名后的文件至主路由器;S305:當(dāng)所述事件鏈表中的變化事件為文件刪除事件時(shí),上傳文件刪除信息至主路由器;S306:當(dāng)所述事件鏈表中的變化事件為文件拖拽事件時(shí),上傳文件拖拽信息至主路由器。
本發(fā)明中從路由器向主路由器同步的方式為單向同步,當(dāng)從路由器的存儲目錄下的文件有修改、新增、重命名等變化時(shí),主路由器也對文件作相應(yīng)改變,當(dāng)從路由器的存儲目錄下的文件有刪除時(shí),僅發(fā)送文件刪除信息至主路由器,主路由器僅作相應(yīng)的記錄,不作相應(yīng)刪除動(dòng)作。
進(jìn)一步優(yōu)選的,當(dāng)從路由器依次將所述事件鏈表中的變化事件同步到主路由器或當(dāng)所述事件鏈表在更新時(shí),所述事件鏈表為鎖定狀態(tài)。
本發(fā)明公開了一種多路由器單向同步系統(tǒng),包括主路由器和至少一個(gè)從路由器,從路由器向主路由器進(jìn)行單向同步,所述從路由器包括:同步時(shí)間判斷模塊,用于判斷當(dāng)前時(shí)間是否包括在預(yù)設(shè)同步時(shí)間段;狀態(tài)判斷模塊,用于判斷事件鏈表是否為鎖定狀態(tài);單向同步模塊,用于當(dāng)判斷所述事件鏈表不是鎖定狀態(tài)時(shí),遍歷所述事件鏈表,依次將所述事件鏈表中的變化事件同步到主路由器。
進(jìn)一步優(yōu)選的,所述從路由器還包括:監(jiān)控模塊,用于實(shí)時(shí)監(jiān)控是否有所述變化事件生成;儲存模塊,用于當(dāng)監(jiān)控到有所述變化事件生成時(shí),將所述變化事件儲存至所述事件鏈表;更新模塊,用于當(dāng)所述事件鏈表不為鎖定狀態(tài)時(shí),更新所述事件鏈表。
進(jìn)一步優(yōu)選的,所述變化事件包括文件修改事件、文件新增事件、文件移動(dòng)事件、文件重命名事件、文件刪除事件以及文件拖拽事件中的任意一個(gè)或多個(gè)。
進(jìn)一步優(yōu)選的,所述單向同步模塊進(jìn)一步用于:當(dāng)所述事件鏈表中的變化事件為文件修改事件時(shí),上傳文件修改信息以及修改后的文件至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件新增事件時(shí),上傳文件新增信息以及新增文件至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件移動(dòng)事件時(shí),上傳文件移動(dòng)信息至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件重命名事件時(shí),上傳文件重命名信息以及重命名后的文件至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件刪除事件時(shí),上傳文件刪除信息至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件拖拽事件時(shí),上傳文件拖拽信息至主路由器。
進(jìn)一步優(yōu)選的,當(dāng)所述單向同步模塊依次將所述事件鏈表中的變化事件同步到主路由器時(shí)或當(dāng)所述更新模塊更新所述事件鏈表時(shí),所述事件鏈表為鎖定狀態(tài)。
與現(xiàn)有技術(shù)相比,本發(fā)明中主路由器作為web服務(wù)器,從路由器配置為 客戶端,通過在預(yù)設(shè)同步時(shí)間段向主路由器同步變化事件,實(shí)現(xiàn)主路由器集中收集和管理資料,有效的解決路由器間單向同步的問題。
附圖說明
下面將以明確易懂的方式,結(jié)合附圖說明優(yōu)選實(shí)施方式,對本發(fā)明予以進(jìn)一步說明。
圖1為本發(fā)明一種多路由器單向同步方法的主要步驟示意圖;
圖2為本發(fā)明一種多路由器單向同步方法的一個(gè)實(shí)施例的步驟示意圖;
圖3為本發(fā)明一種多路由器單向同步方法的從路由器線程創(chuàng)建流程圖;
圖4為本發(fā)明一種多路由器單向同步方法的一個(gè)具體實(shí)施例的線程A的方法流程圖;
圖5為本發(fā)明一種多路由器單向同步方法的一個(gè)具體實(shí)施例的線程B的方法流程圖;
圖6為本發(fā)明一種多路由器單向同步系統(tǒng)的組成示意圖;
圖7為本發(fā)明一種多路由器單向同步系統(tǒng)的完整組成示意圖。
附圖標(biāo)號說明:
100、主路由器;
200、從路由器,201、同步時(shí)間判斷模塊,202、狀態(tài)判斷模塊,203、單向同步模塊,204、監(jiān)控模塊,205、儲存模塊,206、更新模塊。
具體實(shí)施方式
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對照附圖說明本發(fā)明的具體實(shí)施方式。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖,并獲得其他的實(shí)施方式。
為使圖面簡潔,各圖中只示意性地表示出了與本發(fā)明相關(guān)的部分,它們并不代表其作為產(chǎn)品的實(shí)際結(jié)構(gòu)。另外,以使圖面簡潔便于理解,在有些圖中具有相同結(jié)構(gòu)或功能的部件,僅示意性地繪示了其中的一個(gè),或僅標(biāo)出了其中的一個(gè)。在本文中,“一個(gè)”不僅表示“僅此一個(gè)”,也可以表示“多于一個(gè)”的情形。
本發(fā)明的設(shè)計(jì)的初衷主要是實(shí)現(xiàn)以下需求。
前提:A地區(qū)有一臺路由器,擁有存儲的功能,B地區(qū)也有也一臺路由器,同樣提供存儲功能?,F(xiàn)需求B地區(qū)的路由器的儲存中有文件的更新或者變動(dòng),都可以及時(shí)上傳到路由器A上,但是A路由器的儲存有任何變化,無需通知B路由器。B路由器只是提供上傳的功能。
為了實(shí)現(xiàn)該需求則需要提供至少兩臺路由器,分別部署在A,B地區(qū),A區(qū)部署的路由器能提供服務(wù)器的請求路徑,提供上傳下載的權(quán)限,提供客戶端接入的認(rèn)證,B地區(qū)的路由器提供監(jiān)控儲存裝備的文件變化功能,提供上傳文件的功能,提供上傳文件的時(shí)間段設(shè)置。
為此,本發(fā)明提供了一種多路由器單向同步方法,用于從路由器向主路由器進(jìn)行單向同步,圖1為本發(fā)明一種多路由器單向同步方法的主要步驟示意圖,作為本發(fā)明的一個(gè)具體實(shí)施例,如圖1所示,一種多路由器單向同步方法,包括步驟:S100:判斷當(dāng)前時(shí)間是否包括在預(yù)設(shè)同步時(shí)間段;S200:當(dāng)所述當(dāng)前時(shí)間包括在所述預(yù)設(shè)同步時(shí)間段時(shí),進(jìn)一步判斷事件鏈表是否為鎖定狀態(tài);S300:當(dāng)所述事件鏈表不是鎖定狀態(tài)時(shí),遍歷所述事件鏈表,依次將所述事件鏈表中的變化事件同步到主路由器。
具體的,本實(shí)施例中包括一臺帶有存儲裝置的主路由器和至少一臺帶有存儲裝置的從路由器,存儲裝置包括通過USB連接的U盤或移動(dòng)硬盤。
在進(jìn)行單向同步之前需要對主從路由器進(jìn)行各自配置。具體配置如下:
對于主路由器,采用的web服務(wù)器S1,添加插件A和插件B,分別用來提供認(rèn)證、產(chǎn)生key和支持webdav協(xié)議,并提供UI端配置監(jiān)聽端口,提供保存config文件,提供認(rèn)證的key和賬號以及可上傳目錄的config1;
{“port”:”<配置的監(jiān)聽端口號>”,“<key>”:{"user":"<R2>","uploadFloder":"<提供給R2點(diǎn)目錄>"}}
對于從路由器,提供UI端設(shè)定訪問R1提供的URL請求地址,提供輸入在R1上注冊得到的key,提供設(shè)定R2端監(jiān)控的目錄,提供上傳的時(shí)間點(diǎn)等設(shè)置,
可以采用如下config2文件配置
{“config”:{"serverURL":"http://xx.xx.xx.xx:port/<R1提供的儲存目錄>", "key":"<xxxxxx>","localFloder":"/mnt/sda/<R2提供的監(jiān)控目錄>",”syncTime”:”<同步的時(shí)間點(diǎn)>”}}
本發(fā)明中主路由器作為web服務(wù)器,從路由器配置為客戶端,通過在預(yù)設(shè)同步時(shí)間段向主路由器同步變化事件,實(shí)現(xiàn)主路由器集中收集和管理資料,有效的解決路由器間單向同步的問題。
圖2為本發(fā)明一種多路由器單向同步方法的一個(gè)實(shí)施例的步驟示意圖。作為本發(fā)明的另一個(gè)具體實(shí)施例,如圖2所示,還包括步驟:S520:實(shí)時(shí)監(jiān)控是否有所述變化事件生成;S521:當(dāng)有所述變化事件生成時(shí),將所述變化事件儲存至所述事件鏈表;S522:判斷所述事件鏈表是否為鎖定狀態(tài);若是,執(zhí)行下一步,否則,重復(fù)執(zhí)行步驟S522,等待所述事件鏈表釋放;S523:當(dāng)所述事件鏈表不為鎖定狀態(tài)時(shí),更新所述事件鏈表。
本實(shí)施例中存儲的事件鏈表中用于儲存從路由器的存儲目錄中產(chǎn)生的變化事件,并在事件鏈表不為鎖定狀態(tài)時(shí)進(jìn)行更新,為從路由器向主路由器單向同步提供了數(shù)據(jù)支持。
圖3為本發(fā)明一種多路由器單向同步方法的從路由器線程創(chuàng)建流程圖。如圖3所示,從路由器程序分別設(shè)計(jì)成線程A和線程B,線程A用于監(jiān)控存儲目錄下文件的變化,線程B用于處理監(jiān)控的變化事件。
具體的,本實(shí)施例是通過線程A監(jiān)控從路由器存儲目錄下的文件是否發(fā)生變化,當(dāng)監(jiān)控到文件變化時(shí),即產(chǎn)生一個(gè)變化事件,并將變化事件儲存至事件鏈表,以此更新事件鏈表。其中事件鏈表用于提供給線程B處理監(jiān)控的變化事件,而當(dāng)線程B正在根據(jù)事件鏈表處理變化事件時(shí),該事件鏈表為鎖定狀態(tài),此時(shí)無法對事件鏈表進(jìn)行更新。只有當(dāng)線程B不在工作時(shí),線程A才能對事件鏈表進(jìn)行更新。同樣的,當(dāng)線程A在對事件鏈表進(jìn)行更新時(shí),事件鏈表同樣處于鎖定狀態(tài),線程B也無法對事件鏈表進(jìn)行遍歷以處理變化事件,只有等待事件鏈表被釋放之后再進(jìn)行變化事件處理。如此,線程A和線程B不會因沖突而造成事件鏈表更新出錯(cuò)或變化事件處理出錯(cuò)。
圖4為本發(fā)明一種多路由器單向同步方法的線程A的方法流程圖。如圖4所示,線程A的具體流程如下:
400、開始。
401、監(jiān)控從路由器存儲目錄下的文件是否發(fā)生變化;若是,執(zhí)行402;否則,返回執(zhí)行401。
402、生成變化事件儲存在事件鏈表。
403、進(jìn)一步判斷事件鏈表是否為鎖定狀態(tài);若是,執(zhí)行步驟404;否則執(zhí)行步驟405。
404、等待事件鏈表釋放,當(dāng)事件鏈表被釋放,執(zhí)行405。
405、更新事件鏈表。
具體的,線程A,儲存變化事件的結(jié)構(gòu)體如下:
Typedef struct actionEvent{
Char action[20];//文件動(dòng)作事件
Char*oldName;//舊文件名
Char*newName;//新文件名
Char*oldFolder;//舊目錄
Char*nerFolder;//新目錄
};
圖5為本發(fā)明一種多路由器單向同步方法的線程B的方法流程圖。如圖5所示,線程B的具體流程如下:
500、開始
501、判斷當(dāng)前時(shí)間是否為預(yù)設(shè)同步時(shí)間段;若是,執(zhí)行步驟503;否則執(zhí)行步驟502。
502、等待,當(dāng)時(shí)間為預(yù)設(shè)同步時(shí)間段,執(zhí)行步驟503。
503、進(jìn)一步判斷事件鏈表是否為鎖定狀態(tài);若是,執(zhí)行步驟504;否則執(zhí)行步驟505。
504、等待事件鏈表釋放,當(dāng)事件鏈表被釋放,執(zhí)行505。
505、遍歷事件鏈表,依次將所述事件鏈表中的變化事件同步到主路由器。
優(yōu)選的,所述步驟S300“依次將所述事件鏈表中的變化事件同步到主路由器”進(jìn)一步包括以下至少一個(gè)步驟:S301:當(dāng)所述事件鏈表中的變化事件 為文件修改事件時(shí),上傳文件修改信息以及修改后的文件至主路由器;S302:當(dāng)所述事件鏈表中的變化事件為文件新增事件時(shí),上傳文件新增信息以及新增文件至主路由器;S303:當(dāng)所述事件鏈表中的變化事件為文件移動(dòng)事件時(shí),上傳文件移動(dòng)信息至主路由器;S304:當(dāng)所述事件鏈表中的變化事件為文件重命名事件時(shí),上傳文件重命名信息以及重命名后的文件至主路由器;S305:當(dāng)所述事件鏈表中的變化事件為文件刪除事件時(shí),上傳文件刪除信息至主路由器;S306:當(dāng)所述事件鏈表中的變化事件為文件拖拽事件時(shí),上傳文件拖拽信息至主路由器。
優(yōu)選的,所述事件鏈表中的所述變化事件包括文件修改事件、文件新增事件、文件移動(dòng)事件、文件重命名事件、文件刪除事件以及文件拖拽事件中的任意一個(gè)或多個(gè)。
事件變化列表如下:
{“modify”:”<文件被修改>”,
“addfile”:”<新增文件>”,
“move”:”<移動(dòng)文件>”,
“rename”:”<文件被重命名>”,
“delete”:”<文件被刪除>”,
“dragfile”:”<文件被拖拽>”,
}
本發(fā)明可針對從路由器存儲目錄下的多種變化事件進(jìn)行同步,便于主路由器全面掌握和收集各從路由器的情況。
優(yōu)選的,當(dāng)從路由器依次將所述事件鏈表中的變化事件同步到主路由器或當(dāng)所述事件鏈表在更新時(shí),所述事件鏈表為鎖定狀態(tài)。
圖6為本發(fā)明一種多路由器單向同步系統(tǒng)的主要組成示意圖,作為本發(fā)明的一個(gè)具體實(shí)施例,如圖6所示,一種多路由器單向同步系統(tǒng),包括主路由器100和至少一個(gè)從路由器200,從路由器200向主路由器100進(jìn)行單向同步,所述從路由器200包括:同步時(shí)間判斷模塊201,用于判斷當(dāng)前時(shí)間是否包括在預(yù)設(shè)同步時(shí)間段;狀態(tài)判斷模塊202,用于判斷事件鏈表是否為鎖定狀 態(tài);單向同步模塊203,用于當(dāng)判斷所述事件鏈表不是鎖定狀態(tài)時(shí),遍歷所述事件鏈表,依次將所述事件鏈表中的變化事件同步到主路由器100。
具體的,本實(shí)施例中包括一臺帶有存儲裝置的主路由器100和至少一臺帶有存儲裝置的從路由器200,存儲裝置包括通過USB連接的U盤或移動(dòng)硬盤。
本發(fā)明中從路由器200向主路由器100同步的方式為單向同步,當(dāng)從路由器200的存儲目錄下的文件有修改、新增、重命名等變化時(shí),主路由器100也對文件作相應(yīng)改變,當(dāng)從路由器200的存儲目錄下的文件有刪除時(shí),僅發(fā)送文件刪除信息至主路由器100,主路由器100僅作相應(yīng)的記錄,不作相應(yīng)刪除動(dòng)作。
圖7為本發(fā)明一種多路由器單向同步系統(tǒng)的完整組成示意圖,優(yōu)選的,所述從路由器200還包括:監(jiān)控模塊204,用于實(shí)時(shí)監(jiān)控是否有所述變化事件生成;儲存模塊205,用于當(dāng)監(jiān)控到有所述變化事件生成時(shí),將所述變化事件儲存至所述事件鏈表;更新模塊206,用于當(dāng)所述事件鏈表不為鎖定狀態(tài)時(shí),更新所述事件鏈表。
優(yōu)選的,所述變化事件包括文件修改事件、文件新增事件、文件移動(dòng)事件、文件重命名事件、文件刪除事件以及文件拖拽事件中的任意一個(gè)或多個(gè)。
優(yōu)選的,所述單向同步模塊203進(jìn)一步用于:當(dāng)所述事件鏈表中的變化事件為文件修改事件時(shí),上傳文件修改信息以及修改后的文件至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件新增事件時(shí),上傳文件新增信息以及新增文件至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件移動(dòng)事件時(shí),上傳文件移動(dòng)信息至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件重命名事件時(shí),上傳文件重命名信息以及重命名后的文件至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件刪除事件時(shí),上傳文件刪除信息至主路由器;以及當(dāng)所述事件鏈表中的變化事件為文件拖拽事件時(shí),上傳文件拖拽信息至主路由器。
優(yōu)選的,當(dāng)所述單向同步模塊203依次將所述事件鏈表中的變化事件同步到主路由器100時(shí)或當(dāng)所述更新模塊206更新所述事件鏈表時(shí),所述事件 鏈表為鎖定狀態(tài)。
需要說明的是,本系統(tǒng)中各模塊之間的信息交互、執(zhí)行過程等內(nèi)容與上述方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。
應(yīng)當(dāng)說明的是,上述實(shí)施例均可根據(jù)需要自由組合。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。