rsync 同步推送网上看过很多方法,实现免密同步只可以通过添加ssh-key免登录或者以配置文件启动的守护进程启动;
例子:
假设服务器A作为源服务器,服务器B作为备份服务器
1、服务器A只需要配置/etc/rsync.pass设定的密码就可以进行同步
# echo "密码" > /etc/rsync.pass
#chmod 600 /etc/rsync.pass
2、服务器B需要配置给rsync读取的配置文件/etc/rsyncd.conf和/etc/rsync.pass设定用户和密码
# vim /etc/rsyncd.conf (下面会给出参考模板)
启动rsync服务:
#rsync --daemon --config=/etc/rsyncd.conf
服务器A同步命令:
rsync -avz --delete --progress --password-file=/etc/rsync.pass '本地文件' 用户@服务器A IP::配置的模块名 本地同步的路径
需要说明一下的是配置的模块+本地相对的路径是怎么回事
假如使用的模块是:www 目标路径是:/data/test/haha/
那么www模块的path=/data/ 本地相对路径就是 /test/haha/ ,即写成:
rsync -avz --delete --progress --password-file=/etc/rsync.pass '本地文件' 用户@服务器A IP::www/test/haha/
3、配置文件/etc/rsyncd.conf详解:
全局参数
uid = root//运行RSYNC守护进程的用户
gid = root//运行RSYNC守护进程的组
use chroot = no //不使用chroot
max connections = 4 // 最大连接数为4
strict modes =yes//是否检查口令文件的权限
port = 873//默认端口873
注释:下面这3个文件是安装完RSYNC服务后自动生成的文件
pid file = /var/run/rsyncd.pid//pid文件的存放位置
lock file = /var/run/rsync.lock //锁文件的存放位置
log file = /var/log/rsyncd.log//日志记录文件的存放位置
模块参数
[backup] //这里是认证的模块名,在client端需要指定
path = /home/backup///需要做镜像的目录,不可缺少!
comment = This is a test //这个模块的注释信息
ignore errors//可以忽略一些无关的IO错误
read only = yes// 只读
list = no //不允许列文件
auth users = hening //认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsync.pass //密码和用户名对比表,密码文件自己生成
#hosts allow = 192.168.1.1, 10.10.10 .10//允许主机
#hosts deny = 0.0.0 .0/0 //禁止主机
#transfer logging = yes
附 rsync + inotify-tools实现实时同步更新脚本
一、下载安装inotify-tools
wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools
./configure && make && make install
二、同步脚本
Server B的inotify监控脚本
(监控客户端修改同步上传到服务器端)
#!/bin/bash
src=/data/tomcat8080/webapps/
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $src | while read file
do
rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas $src [email protected]::wwwroot
echo "$src was rsynced"
done
文中有不妥或者错误的地方还望指出,以免误人子弟。参考总结自百度。
再次感谢您耐心的读完本篇文章。