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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章