1、服务端配置 创建配置文件rsyncd.conf

vi /etc/rsyncd.conf  

-----------------------------------------------------------------------

uid = root

gid = root

 

use chroot = no

 

read only = yes

 

#limit access to private LANs

hosts allow=192.168.1.0,192.168.1.168   #多服务器 , 线隔开

hosts deny=*

max connections = 5  #连接数

 

pid file = /var/run/rsyncd.pid  #pid位置

 

secrets file = /etc/rsyncd.secrets  #密码文件存放位置

#lock file = /var/run/rsync.lock           

 

#motd file = /etc/rsyncd.motd         #欢迎页面

 

#This will give you a separate log file

log file = /var/log/rsync.log

 

#This will log every file transferred - up to 85,000+ per user, per sync

transfer logging = yes

 

log format = %t %a %m %f %b

syslog facility = local3

timeout = 300

 

# MODULE OPTIONS

[web]  #模块名称 多目录要同步的时候 可以添加多一个模块

path = /home/www/web/  #要同步的目录 源服务器

list=yes

ignore errors

auth users = root  #源服务器的用户名

comment = tongbu   #描述                  

exclude =

 

。。。。

 

2、创建服务端的密码文件,用于客户端登录的时候验证,所以客户端存放的密码必须为下面的密码:

vi /etc/rsyncd.secrets

 

root:g88888

 

chmod 600 /etc/rsyncd.secrets #更改文件权限

 

启动:

/usr/bin/rsync --daemon &

 

3、客户端配置

vi /etc/rsyncd.secrets   #这里也是创建密码文件

 

g88888   #这里是服务端rsync服务授权密码

 

chmod 600 /etc/rsyncd.secrets #更改文件权限

 

创建同步脚本:

#!/bin/bash

rsync -vzrtopg --delete --exclude "upload/" --progress

--password-file=/etc/rsyncd.secrets root@192.168.1.168::web /home/www/web

 

其中的 upload 文件夹表示不做同步

 

4、然后在主服务器上创建同步脚本 通过ssh远程执行客户端的同步命令

ssh -p22 root@192.168.1.0 /root/rs.sh

ssh -p22 root@192.168.1.168 /root/rs.sh

 

5、为了避免文件同步的时候 需要输入密码 需完成以下配置:

 

第一步:生成密匙对,我用的是rsa的密钥。触发同步的服务器上使用命令# ssh-keygen -t rsa

生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。

接着会提示输入一个不同于你的password的密码,直接回车,让它空着。当然,也可以输入一个,这样密钥对就生成完了。

 

其中公共密钥保存在 ~/.ssh/id_rsa.pub

 

私有密钥保存在 ~/.ssh/id_rsa

 

然后改一下 .ssh 目录的权限,使用命令 chmod 755 ~/.ssh

 

第二步:把这个密钥对中的公共密钥复制到你要访问的机器上去,

并保存为 ~/.ssh/authorized_keys.

例如:scp .ssh/id_rsa.pub 192.168.1.168:/root/.ssh/authorized_keys

这样就大功告成了。之后你再用ssh scp sftp 之类的访问那台机器时,就不用输入密码了