一、基本介绍
rsync命令是一个可用来进行远程/本地文件复制的工具,它的功能非常强大,它采取了“差异复制”机制,即只复制“差异数据”,这使得复制数据量大大减少。
使用rsync命令复制数据,一般可采用“通过RSH隧道或者SSH隧道”模式,也可采用“C/S”模式。前者搭建方便,但是杀鸡用了宰牛刀,需要能够建立RSH隧道或者SSH隧道;后者搭建繁杂,但是没有前述要求。因此,一般基于“C/S”模式使用rsync命令复制数据。
二、rsync client
2.1、常用用法
1 | rsync -vzrt --copy-links [--delete] [--contimeout=600] --log-file=FILEPATH --port=PORT --password-file=FILEPATH [USER@]HOST::SRC... DEST |
2.2、含义与选项
2.2.1、含义
第一行命令表示:从“远端”复制文件到“本地”,“远端”作为发送端,“本地”作为接收端。
第二行命令表示:从“本地”复制文件到“远端”,“本地”作为发送端,“远端”作为接收端。
2.2.2、选项
“v”:打印日志,“v”越多,打印日志信息越详细,一般使用3个“v”进行调试(rsync 3.0.6版本有个bug,加上“v”选项可能导致卡死)。
“z”:传输过程中,压缩文件。
“r”:递归传输。
“t”:保存“mtime”值,要开启“快速比较(quick check)”需要用到这个属性值。
“–copy-links”:当发送端遇到“软符号链接文件”,发送指向文件数据(包括“一般文件”和“目录文件”)。
“–delete”:接收端删掉多余的文件,用于同步模式。
“–contimeout=600”:“rsync client”等待与“rsync daemon”建立连接的超时时间,这里的值为600毫秒。
“–log-file=FILEPATH”:指定日志文件,可结合“–log-file-format”选项进行日志格式控制。
“–port=PORT”:指定“rsync daemon”监听的端口号。
“–password-file=FILEPATH”:指定包含连接“rsync daemon”所需密码的文件,特别需要注意的是,该文件的权限必须设为“600”,否则会出现验证失败错误。
“USER”:不需要是真的系统用户,只需是允许使用rsync服务的用户。
“HOST”:远端“rsync daemon”运行主机。
“SRC”:“远端”为发送端,则为远端机器上的模块路径;“本地”为发送端,则为本地机器上的目录路径。
“DEST”:“本地”为接收端,则为本地机器上的目录路径;“远端”为接收端,则为远端机器上的模块路径。
需要注意的是,以上“::”后面跟随的是以“模块名称”为开始的模块路径,而不是具体的目录路径。“rsync daemon”以模块为配置单元,使得配置更加灵活。
三、rsync daemon
3.1、常用用法
1 | rsync --daemon --config=rsyncd.conf |
3.2、含义与选项
3.2.1、含义
加载“rsyncd.conf”文件中的配置,运行“rsync daemon”。
3.2.2、选项
“–daemon”:以“rsync daemon”模式运行。
“–config=rsyncd.conf”:加载“rsyncd.conf”文件中的配置。
3.3、“rsyncd.conf”配置文件语法
“rsyncd.conf”配置文件语法描述如下:
1 | 全局参数配置(key=value) |
一个样例配置文件如下:
1 | #rsync daemon进程pid记录文件 |
参考文献: [1]man 1 rsync [2]man 5 rsyncd.conf [3]http://stackoverflow.com/questions/20773118/rsync-suddenly-hanging-indefinitely-during-transfers