rsync 交互過程

執行命令:./rsync -av root@localhost::yougotit/trie ./zzxx 時,一覽客戶端和服務端交互的信息
符號標記:C 客戶端 同時也是 receiver,S 服務端 同時也是sender




具體交互過程(連接後):
// 客戶端協議版本號
C->S: "@RSYNCD: 31.0\n" 


// 服務端協議版本號                           
S->C: "@RSYNCD: 30.0\n"


// 同步的模塊名                            
C->S: "yougotit\n" 


// 服務端要求密碼驗證,IyKE/cOppcgfUc8jSn950g用於處理密碼,提高安全性                                
S->C: "@RSYNCD: AUTHREQD IyKE/cOppcgfUc8jSn950g\n" 


// 用戶名 和密碼
C->S: "root Zr17jc0Ibi3CiLIsSeQZWQ\n  


// 服務端通知客戶端驗證通過             
S->C: "@RSYNCD: OK\n"  


// 服務端需要用到的參數,參數之間以'\0'作爲分界符,最後的參數後面再跟一
// 個空參數的分界符,表示參數傳遞完畢                            
C->S: "--server\0--sender\0-vlogDtpre.iLs\0.\0yougotit/trie\0\0"  


S->C: 1字節的 compat_flags,4字節的 checksum_seed
C->S: 4字節的數值0




LOOP1##  S->C: 傳輸文件(夾)名字屬性,1字節的數值1(recv_file_list中的
            flags,爲0表示此層次的文件(夾)傳輸完畢),flags不爲0 則傳
            1字節的數值l2(recv_file_entry中的l2),l2字節的文件(夾)名
            字 "trie",3字節的文件(夾)內容長度,4字節的文件修改時間
            modtime 數值1389282516,4字節的文件(夾)mode(訪問權限)數
            值040755,1字節的uid 數值0,4字節的gid 數值0
S->C: 2字節的文件(夾)索引ndx 若 ndx = -2, 則所有的文件(夾)屬性傳輸
    結束,繼續傳2字節的索引;若爲正常的索引值(如數值-101,這裏的-101會
    減去基準值使索引值爲正),重複執行LOOP1,傳遞索引爲ndx(此時爲trie文
    件夾)的文件夾下的文件或文件夾屬性;若爲>=0 的數值(表示將要傳輸相應
    的文件(夾))則繼續下面的步驟




S->C: 4字節的sum->count,4字節的sum->blength,4字節的sum->remainder
S->C: 傳遞文件內容:4字節的data塊大小i,i字節的塊內容;傳完內容後,傳結束
符4字節的數值0
S->C: checksum_len(作爲特例值爲16)長的剛纔所傳文件內容的校驗值



for others click bellow:

how  rsync  works












發佈了63 篇原創文章 · 獲贊 11 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章