一.問題背景經(jīng)常碰到要同步數(shù)據(jù)的情況,而系統(tǒng)自帶的復(fù)制功能又不能實(shí)現(xiàn)增量同步,每次都要做全量復(fù)制,發(fā)生異常情況后只能重頭再來(lái),非常麻煩,優(yōu)其是對(duì)那種大文件的處理,更是耗時(shí)。二.解決方案1.計(jì)算源目錄數(shù)據(jù)指紋2.計(jì)算目標(biāo)目錄數(shù)據(jù)指紋3.對(duì)比指紋數(shù)據(jù),找出差異項(xiàng),得到需要添加,刪除或更新的文件列表,計(jì)算出需要更新的數(shù)據(jù)大小4.挨個(gè)同步差異項(xiàng),如果碰到大文件,則緩存其指紋數(shù)據(jù)到目標(biāo)文件夾中,供下次同步數(shù)據(jù)時(shí)使用三.數(shù)據(jù)指紋說(shuō)明數(shù)據(jù)指紋顧名思義,就是對(duì)某一文件夾或文件的唯一標(biāo)識(shí),其格式為:文件相對(duì)路徑+:(分隔符)+修改日期+:+數(shù)據(jù)長(zhǎng)度+:+內(nèi)容指紋內(nèi)容指紋是由多個(gè)內(nèi)容塊的md5組成內(nèi)容塊就是對(duì)大文件進(jìn)行分割處理,每次比較數(shù)據(jù),最小的同步對(duì)象就是內(nèi)容塊,避免對(duì)整個(gè)文件做處理,也是實(shí)現(xiàn)增量同步的關(guān)健點(diǎn)四.源碼下載源碼:https://github.com/xxonehjh/file-sync可執(zhí)行文件:fileSync.jar使用說(shuō)明:java -jar fileSync.jar 源目錄 目標(biāo)目錄
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注