2.使用RSYNC作为源:需要配置RSYNC服务端程序
-------新建并配置rsync源服务器使其可以被同步(读取或写入)------
vi /etc/rsyncd.conf
uid = nobody //运行用户
gid = nobody //运行用户组
use chroot = yes //禁锢在源目录
address = 192.168.80.181 //监听地址
port 873 //监听端口
log file = /var/log/rsyncd.log //日志文件位置
pid file = /var/run/rsyncd.pid //存放进程ID的文件位置
hosts allow = 192.168.80.0/24 //允许访问的客户端地址
[wwwroot] //共享模块名称
path = /var/www/html //源目录实际路径
comment = Document Root of www.benet.com //说明
read only = yes //是否为只读
dont compress = .gz .bz2 .tgz .zip .rar .z //同步时不再压缩的文件类型
auth users = backuper //授权账户
secrets file = /etc/rsyncd_users.db //存放账户信息的数据文件
:wq
----建立虚拟用户配置文件并设置恰当的权限-----
[www.aa.com@ ~]# vi /etc/rsyncd_users.db
backuper:123123 //无需建立同名系统账户,这里是虚拟用户
:wq
[www.aa.com@ ~]# chmod 600 /etc/rsyncd_users.db //由于账号明文存放,因此要调整文件权限,避免账号信息泄露
//备份用户backuper需要对源目录/var/www/html/有相应读取权限,实际上,只要other组有读取权限,授权用户backuper和运行用户nobody也就有读取权限了。
//如果目录不存在就新建一个
----启动、关闭rsync程序---
[www.aa.com@ ~]# rsync --daemon
[www.aa.com@ ~]# netstat -anpt | grep rsync
关闭rsync程序:
[www.aa.com@ ~]# killall -3 rsync //没有killall命令就执行yum install psmisc -y安装
再次启动:
如果出现上述错误,只需rm -rf /var/run/rsyncd.pid,之后再去启动就可以了。
------------在客户端测试同步情况------
[www.ab.com@ ~]# rsync -avz backuper@192.168.80.181::wwwroot/ /tmp/ //把服务器上源目录的文件下载到本地tmp目录下
[www.ab.com@ ~]# rsync -avz /bin/b* backuper@192.168.80.181::wwwroot //把本地的文件上传到服务器(注意服务器端目录本身以及程序的权限)
出现上述错误,是因为服务器端rsync的配置文件中read only是只读,没有写入权限,且目录本身没有赋予other写入的权限
[www.aa.com@ ~]# chown nobody /var/www/html/
[www.aa.com@ ~]# vi /etc/rsyncd.conf //修改read only的值为no
此时无需重启服务,再次执行同步命令:
----使客户端使用rsync备份时不需要密码交互----
[www.ab.com@ ~]# export RSYNC_PASSWORD=123123 //临时生效,关机后失效
//以下配置永久生效
[www.ab.com@ ~]# vi /etc/profile
export RSYNC_PASSWORD=123123 添加到最后一行下
[www.ab.com@ ~]# source /etc/profile
3.配置rsync+inotify实时同步
----编译安装inotify(被备份主机上做)----
[www.aa.com@ ~]# tar xf inotify-tools-3.14.tar.gz -C /opt
[www.aa.com@ ~]# cd /opt/inotify-tools-3.14/
[www.aa.com@ ~]# ./configure
[www.aa.com@ ~]# make && make install
-------配合inotify触发备份、调整内核参数(在被备份主机181上改)----
[www.aa.com@ ~]# vi /etc/sysctl.d/te.conf
fs.inotify.max_queued_events = 16384 //监控队列大小
fs.inotify.max_user_instances = 1024 //最多监控实例数
fs.inotify.max_user_watches = 1048576 //每个实例最多监控文件数
:wq
[www.aa.com@ ~]# sysctl -p //初始化
-----测试监控效果------
[www.aa.com@ ~]# inotifywait -mrq -e modify,create,move,delete /opt/test/ //m(持续监控)r(递规整个目录)q(简化输入信息) -e指定监控的事件:向被监控的目录写入或者其它操作时会有输出。
---通过脚本完成触发备份任务,这里只要/opt//test/目录下有新建修改移除删除等动作时,会完全备份到/var/www/html/目录下-----
[www.aa.com@ ~]# vi /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /opt/test/"
RSYNC_CMD="rsync -azH --delete /opt/test/ backuper@192.168.80.181::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 5 ] ; then
$RSYNC_CMD
fi
done
:wq
[www.aa.com@ ~]# sh /opt/inotify_rsync.sh &
-----测试查看------
[www.aa.com@ ~]# rm -rf /opt/test/t2
原文地址:http://blog.51cto.com/12385631/2091738