执行命令:./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: