服务端
rsyncd.conf
uid = nobody
gid = nobody
use chroot= no
max connections = 10
strict mode = yes //是否检查文件权限
pid file=/var/run/rsyncd.pid //守护进程路径
lock file =/var/run/rsync.lock //最大max connections锁文件
log file=/var/log/rsyncd.log //日志文件
[data] //模块名,表示模块开始
path =/data/website1/images
comment= data file
ignore errors //可忽略一些无关的I/错误
read only =no //是否只读 no用户可上传文件
write only =no //no用户可下载文件,yes用户不能下载
hosts allow = *
hosts deny =192.168.12.131
list =false
uid =root
gid =root
auth users = backup //连接模块的用户名,与root无关
secrets file= /etc/server.pass //连接模块的用户名,密码文件
server.pass
backup:data //注,需给予600权限:chmod 600 /etc/server.pass
启用rsync
rsync --daemon
server.pass文件内容:
backup:123456
客户端
客户端不用任何设置,但为啦同步时不用输入密码需要创建一个密码文件(注:与rsyncd.conf中的用户,密码相同,路径任意,做同步时指定即可。)
执行同步:
遇到的问题
在配置rsync时,对客户端和服务器端的角色定位不清晰。到底是客户端把数据同步到服务器端,还是把服务器端的数据同步到客户端。按照我的理解是把客户 端提交的内容同步到服务器上,但是我在客户端执行同步命令时却发现把服务器端的数据同步到了客户端。我执行的命令如下rsync -vzrtopg --delete www@192.168.1.147(连接的主机)::backup /data/test/ --password-file=/etc/server.pass而我理想中的方式应该是:rsync -vzrtopg --delete /data/test/ www@192.168.1.147::backup --password-file=/etc/server.pass
显而易见。rsync与scp的上传下载方式类似,无所谓客户端,服务器端,一台机器可以把本机数据同步到另一台,也可以把另一台指定目录下的数据同步到本地。为了方便就把配置复杂一点(需要编写配置文件)的哪台机器当做服务器端。