rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬盘中的不同目录。
我只做了手动同步,并没有进行推送处理,有兴趣的朋友可参考文末的链接。
服务端配置:
配置文件默认在:/etc/rsyncd.conf
配置中留意,用于设置客户端连接的用户名和密码,且保留该文件属于 root 组及用户,且权限为 600。
secrets file = /etc/rsyncd.password
密码文件格式(一行一个):
用户名:密码
# 增加项目(只读) [sync1] path = /tmp/sync1 # 允许同步的目录 auth users = test # 允许连接的用户 read only = true # 只读 comment = this is sync1 rsync # 注释 # 增加项目(允许读写) [test] path = /tmp/test # 允许同步的目录 auth users = test # 允许连接的用户 read only = false # 非只读,即允许写入,默认为,只读 comment = this is test rsync # 注释
开机启动
echo "/usr/bin/rsync --daemon" >> /etc/rc.local chmod +x /etc/rc.local
更多配置信息,可参考文末的链接。
客户端同步时:
rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd_www.password test@domain.com::sync1 /tmp/test
命令解释:
-vzrtopg # 同步选项 v显示更多信息 z使用压缩 r递归同步文件夹 t保持文件时间 o保持文件所有者信息 p保持文件权限 g保持文件所在组
–progress # 显示进度
–password-file # 指定密码文件(只需要填写密码即可)
test@domain.com::sync1 # 以 test 用户名连接 domain.com 站的同步服务器,同步的项目为 sync1
/tmp/test # 并存储到本地目录
同理推送时:
rsync -avzP /www/test.log --password-file=/etc/rsyncd_test.password --exclude-from='./ignore.txt' test@domain.com::test
命令解释:
-avzP # 推送选项 a 递归方式保持文件属性等信息 v显示更多信息 z使用压缩 P保留那些因故没有完全传输的文件且在传输时显示传输过程
–password-file # 指定密码文件(只需要填写密码即可)
–exclude-from # 指定忽略的规则文件
test@domain.com::test # 以 test 用户名连接 domain.com 站的同步服务器,同步的项目为 test
报错信息
客户端报错:
The –password-file option may only be used when accessing an rsync daemon.
rsync error: syntax or usage error (code 1) at main.c(1393) [Receiver=3.1.3]
解决方法:增加 –port=服务端的端口号。
rsync: failed to connect to test.com (127.0.0.1): Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(125) [Receiver=3.1.2]
解决方法:端口未开放,防火墙开户指定端口。
rsync: server sent “HTTP/1.1 400 Bad Request” rather than greeting
rsync error: error starting client-server protocol (code 5) at main.c(1649) [Receiver=3.1.2]
解决方法:指定端口错误不是有效的同步端口(或者端口冲突),使用 netstat -antp 查看哪些程序占用了该端口,重新设置同步端口或移除冲突的程序。
@ERROR: password file must not be other-accessible
rsync error: syntax or usage error (code 1) at authenticate.c(196) [Receiver=3.1.3]
解决方法:密码文件需要设置 600 权限。即,root 可读,可写,其他禁止操作
@ERROR: auth failed on module www
rsync error: error starting client-server protocol (code 5) at main.c(1657) [Receiver=3.1.3]
解决方法:检查密码文件,写一个,不需要指定用户名,或密码错误。
rsync: failed to connect to domainame (10.0.0.1): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(127) [Receiver=3.1.3]
解决方法:服务端,rsync 未启动,尝试手动启动,并增加开机启动。
ERROR: password file must not be other-accessible
解决方法:密码文件外部访问权限太大,改小点。
@ERROR: chdir failed
解决方法:服务端指定的同步路径不存在,在配置文件中核对。
更多的信息,参见: