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 之类的访问那台机器时,就不用输入密码了