2017/02/03

mac使用rsync同步到linux


今天在使用mac进行rsync代码到ubuntu时一直报错:

rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-51/rsync/io.c(307) [sender=2.6.9]

一开始以为是配置环境问题,但是检查正常。接着还有是使用了opg参数,保留了用户权限信息原因,发现也不是这个问题。接着在网上找到了一篇别人写的文章, 根据他用的参数发现可以同步没问题,最后才把问题定位到,原因是我使用了一个c参数导致的,去掉就没问题。

我自己常用rsync的参数有

#-c, --checksum 打开校验开关,强制对文件传输进行校验
#-v, --verbose 详细模式输出 
#-z, --compress 对备份的文件在传输时进行压缩处理 
#-r, --recursive 对子目录以递归模式处理 
#-o, --owner 保持文件属主信息
#-p, --perms 保持文件权限
#-g, --group 保持文件属组信息  
#-D, --devices 保持设备文件信息 
#-t, --times 保持文件时间信息
#--delete 删除那些DST中SRC没有的文件 
#--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
#--exclude 忽略文件夹
#--exclude-from 根据配置文件填写内容进行忽略

从上面可以看到-c的作用是强制对文件传输进行校验,那么它到底校验了哪些内容导致mac同步到linux出现报错