rsync 推送

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



文中有不妥或者错误的地方还望指出,以免误人子弟。参考总结自百度。

再次感谢您耐心的读完本篇文章。

你可能感兴趣的:(rsync 推送)