日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rsync文件实时同步_从文件同步rsync算法谈起

發(fā)布時間:2025/5/22 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rsync文件实时同步_从文件同步rsync算法谈起 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
之前在某個產(chǎn)品中使用了Gossip算法進(jìn)行數(shù)據(jù)庫數(shù)據(jù)的同步,但是在新的產(chǎn)品中有個需求,就是當(dāng)文件變化時,(由于文件比較大,比較多)支持增量推送到文件服務(wù)器上。于是想到了Unix下的rsync算法,本文也是拜讀了很多大佬的作品,從自己理解的角度整理出來。關(guān)于rsync算法的原文請閱讀

https://rsync.samba.org/tech_report/tech_report.html

1、同步技術(shù)

一般除了rsync增量同步外,還有一種scp的同步方式,用于將文件上傳和下載,類似于ftp協(xié)議。scp?username@servicename:/path/filename?/var/localdir舉例:比如使用這個命令scp root@192.168.0.1:/path/ClassPath.xml /var/localdir。意思就是將192.168.0.1服務(wù)器上面的Classpath.xml文件下載到本地的var/localdir文件夾中。scp?/var/filename?username@servicename:/path舉例:比如使用scp /a.xml root@192.168.0.1:/path ,意思就是將本地的a.xml文件上傳到192.168.0.1 服務(wù)器的path路徑下,用戶名root。

? ? ? 當(dāng)然了,還可以在scp命令的后面加上-r 參數(shù),用于下載和上傳整個文件夾。類似與rmdir 命令遞歸刪除文件夾了。在使用scp的前提是對端服務(wù)器開啟文件的寫入權(quán)限。

? ? 關(guān)于ftp這種應(yīng)用層的上傳下載協(xié)議,我也在項目中用過,這里不再敘述,推薦一個開源組件libcurl,可以支持多種協(xié)議,使用也比較簡單。

2、rsync算法原理

? ? ? 一般情況下,如果我們要同步的文件只想傳不同的部分,我們就需要對兩邊的文件做差異對比,但是這兩個問題在兩臺不同的機(jī)器上無法做對比。如果我們做對比,就要把一個文件傳到另一臺機(jī)器上做對比,但這樣一來,我們就傳了整個文件,這與我們只想傳輸不同部的初衷相背。

? ? rsync的算法是讓這兩邊的文件不見面,但還能知道它們間有什么不同。

? ? rsync的算法如下:(假設(shè)我們同步源文件名為fileSrc,同步目的文件叫fileDst)

1)分塊Checksum算法。首先,我們會把fileDst的文件平均切分成若干個小塊,比如每塊512個字節(jié)(一般在2的整數(shù)次方,比如512,1024,最后一塊會小于這個數(shù)),然后對每塊計算兩個checksum,

  • 一個叫rolling checksum,是弱checksum,32位的checksum,其使用的是Mark Adler發(fā)明的adler-32算法,

  • 另一個是強(qiáng)checksum,128位的,以前用md4,現(xiàn)在用md5 hash算法。

這里使用兩個checksum算法,是因為我們需要一個快算法來鑒別文件塊的不同,但是弱的adler32算法碰撞概率太高了,所以我們還要引入強(qiáng)的checksum算法以保證兩文件塊是相同的。也就是說,弱的checksum是用來區(qū)別不同,而強(qiáng)的是用來確認(rèn)相同。

2)傳輸算法同步目標(biāo)端會把fileDst的一個checksum列表傳給同步源,這個列表里包括了三個東西,rolling checksum(4字節(jié),32bits),

md5 checksume(16字節(jié),128bits),文件塊編號。

3)checksum查找算法。同步源端拿到fileDst的checksum數(shù)組后,會把這個數(shù)據(jù)存到一個hash table中,用rolling checksum做hash,以便獲得O(1)時間復(fù)雜度的查找性能。這個hash table是16bits的,所以,hash table的尺寸是2的16次方,對rolling checksum的hash會被散列到0 到 2^16 – 1中的某個整數(shù)值。

? ?算法的流程如下所示:

? ?首先從目的文件獲取了文件塊的checksum,然后開始計算源端的文件。

1)取fileSrc的第一個文件塊(我們假設(shè)的是512個長度),也就是從fileSrc的第1個字節(jié)到第512個字節(jié),取出來后做rolling checksum計算。計算好的值到hash表中查。

2)如果查到了,說明發(fā)現(xiàn)在fileDst中有潛在相同的文件塊,于是就再比較md5的checksum,因為rolling checksume太弱了,可能發(fā)生碰撞。于是還要算md5的128bits的checksum,這樣一來,我們就有 2^-(32+128) = 2^-160的概率發(fā)生碰撞,這太小了可以忽略。如果rolling checksum和md5 checksum都相同,這說明在fileDst中有相同的塊,我們需要記下這一塊在fileDst下的文件編號

3)如果fileSrc的rolling checksum 沒有在hash table中找到,那就不用算md5 checksum了。表示這一塊中有不同的信息。總之,只要rolling checksum 或 md5 checksum 其中有一個在fileDst的checksum hash表中找不到匹配項,那么就會觸發(fā)算法對fileSrc的rolling動作。于是,算法會住后移動1個字節(jié),取fileSrc中字節(jié)2-513的文件塊要做checksum,然后執(zhí)行step1。

4)這樣,我們就可以找出fileSrc相鄰兩次匹配中的那些文本字符,這些就是我們要往同步目標(biāo)端傳的文件內(nèi)容了。

? ? ?經(jīng)過算法的計算和對比,將不同的文件和文件塊組成一個新的列表發(fā)送到fileDst端,fileDst端收到新的文件列表,則進(jìn)行組裝成新的文件。最終兩個文件同步成功。

3?總結(jié)

? ? ? rolling checksum算法給我們提供了一種增量同步的思路。通過循環(huán)校驗查找,找到相同的塊。最終將不同的數(shù)據(jù)同步過去即可,極大的減少了網(wǎng)絡(luò)傳輸?shù)膸挕?/p>

總結(jié)

以上是生活随笔為你收集整理的rsync文件实时同步_从文件同步rsync算法谈起的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年人在线观看 | 边啃奶头边躁狠狠躁 | 97黄色网| 中字幕视频在线永久在线观看免费 | 欧美综合网 | 一级特黄aa大片欧美 | 久久久高清 | 在线播放不卡 | 日韩狠狠 | 大吊一区二区三区 | 国产热| 中国色老太hd | 91av视频在线播放 | 国产高清99 | 国产欧美精品aaaaaa片 | 免费的黄色片 | 欧美成人三级在线观看 | 国产美女精品 | 一个人看的www片免费高清中文 | 国产伦精品一区二区免费 | 欧美久久成人 | 自拍亚洲综合 | 三级做爰在线观看视频 | 日韩精品一区二区亚洲av观看 | 中文字幕有码无码人妻av蜜桃 | 日本免费黄色 | 国产又黄又硬又粗 | 日本不卡视频在线 | 国产无套在线观看 | 欧美丰满老熟妇xxxxx性 | 国产超91 | 青青草国内自拍 | 欧美日韩亚洲国产另类 | 91视频com| 国产在线黄 | 亚洲一区二区三区久久久成人动漫 | 欧美乱妇视频 | 欧美日韩一区二区三区国产精品成人 | 夫の上司に犯波多野结衣853 | 日韩在线视屏 | 丰满大乳露双乳呻吟 | 国产精品视屏 | 国产在线二区 | 欧美日韩女优 | 欧洲亚洲女同hd | 午夜视频网 | 波多野结衣乳巨码无在线 | 在线播放小视频 | 美女热逼 | 黄色一级大片在线免费看国产一 | 国产精品综合一区二区 | 男人天堂avav | 男男做的视频 | 成人av图片 | 28一20岁女人一级 | 不卡的av| 国产精品人人做人人爽人人添 | 人人射人人干 | 欧美三区四区 | 久久色在线视频 | 91精品国产色综合久久不卡粉嫩 | 国产精品成人aaaaa网站 | 久久超级碰碰 | 日韩精品一区二区三区在线 | 欧美特级黄 | 欧美 日韩 国产 高清 | 色综合天天 | 日韩免费 | 我不卡av | av激情四射 | 欧美精品一区二区视频 | 捆绑无遮挡打光屁股调教女仆 | 亚洲午夜小视频 | 三级精品在线观看 | 亚洲精品少妇久久久久久 | 粗大黑人巨茎大战欧美成人免费看 | 三级福利 | 亚洲国产精品成人综合在线 | 白峰美羽在线播放 | av在线电影网 | 欧美性激情 | 东京av在线 | 手机在线观看日韩av | 久久精品美乳 | 三级黄色在线播放 | 91在线看| 国产精品女教师 | av在线视屏 | 久久综合九色综合网站 | 青春草国产视频 | 另类在线视频 | 成人久久网| 欧美黑人精品一区二区不卡 | 九九九九九九精品 | 国产福利社 | 黄色一级片视频 | 特大黑人娇小亚洲女mp4 | 欧美综合在线观看 | 三级不卡|