Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109382
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 397
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-26 15:36
文章分类

全部博文(29)

文章存档

2016年(3)

2015年(13)

2014年(13)

我的朋友

分类: 系统运维

2014-12-31 15:16:31

rsync+inotify
 

ftp/rsync/rsync-3.0.9.tar.gz
 
Rsync
 
rsync-Master01:                          rsync-Master02:                        rsync-Slave02:
10.0.2.220                                       10.0.2.221                                   10.0.2.222
 
 
rsync安装:
 
tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
#./configure --prefix=/usr/local/rsync
./configure
make
make  install
 
 
[root@Puppet-Master adbfp]# cat   /etc/rsyncd.conf   
#传输时守护进程的用户ID
uid = root
 
#传输时守护进程的用户组ID
gid = root
 
#端口
port = 6001
 
use chroot = no
 
#最大并发连接数
max connections = 10
 
#是否检查口令文件权限
strict modes = yes
 
timeout = 300
 
#rsync守护进程对应的PID文件路径
pid file = /var/run/rsyncd.pid
 
#指定支持max connections的锁文件
lock file = /var/run/rsyncd.lock
 
#指定rsync日志输出路径
log file = /var/log/rsyncd.log
 
 
#定义模块名称
 
[ftp]
 
#指定需要备份的文件或目录
path =/var/ftp/adbfp
 
#注释
comment = ftp file
 
#忽略一些无关的I/O错误
ignore errors
 
#no表示客户端可以上传文件,yes表示只读。
read only = no
 
#no表示可以下载,yes表示不能下载。
write only = no
 
#允许连接服务器的主机
hosts allow = 10.0.2.0/24,10.0.28.0/24
 
#当客户请求可以使用模块时,该模块是否被列出。true表示列出。
list = yes
 
uid = root
gid = root
 
[idclicks]
 
#指定需要备份的文件或目录
path =/var/ftp/idclicks
 
#注释
comment = idclicks file
 
#忽略一些无关的I/O错误
ignore errors
 
#no表示客户端可以上传文件,yes表示只读。
read only = no
 
#no表示可以下载,yes表示不能下载。
write only = no
 
#允许连接服务器的主机
hosts allow = 10.0.2.0/24,10.0.28.0/24
 
#当客户请求可以使用模块时,该模块是否被列出。true表示列出。
list = yes
 
uid = root
gid = root
 
#连接该模块的账户
auth users = backup
secrets file = /etc/server.pass
 
 
同步账户/密码
 
[root@Puppet-Master adbfp]# more /etc/server.pass
backup:123456
 
启动rsync服务
 
[root@Puppet-Master rsync-3.0.9]# /usr/local/bin/rsync --daemon
[root@Puppet-Master rsync-3.0.9]# netstat -tanp | grep 6001   
tcp        0      0 0.0.0.0:6001                0.0.0.0:*                   LISTEN      25271/rsync        
tcp        0      0 :::6001                     :::*                        LISTEN      25271/rsync   
 
 
 
Slave:
10.0.2.221
 
安装rsync  略
 
[root@Puppet-Slave ~]# cat rsync.sh  
#!/bin/bash
# -vzrtopg 详解
#v:详细模式输出
#z:压缩传输
#r:递归模式处理
#t:保持文件时间信息
#o:保持文件属主信息
#p:保持文件权限信息
#g:保持文件属组信息
 
#--delete:指定以rsync服务器端为基准记性数据同步
#--progress:显示数据同步过程
#--exclude:排除不需要的数据文件类型
#/ixdba.net:指定客户端上的存放路径
#-vzrtopg
 /usr/local/bin/rsync -avzrtopg --port 6001 --delete --progress backup@10.0.2.220::ftp  /ftp_bak  --password-file=/etc/server.pass > rsync.log
 
[root@Puppet-Slave ~]# cat /etc/server.pass
123456
 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
(线上脚本)
AREA=beijing
IP=10.0.2.221
backdir=/tmp/backup
rsync=/usr/local/rsync/bin/rsync
passfile=/etc/server.pass
DATA=`date +%Y-%m-%d`
for sysfile in /etc/sysconfig/iptables /var/spool/cron /root/.bash_history /var/log/wtmp /var/log/messages /home/sysop/script /usr/local/apache2/htdocs /usr/local/apache2/conf
do
name=`echo $sysfile|sed -e 's/\///g'`
/bin/tar zcf $backdir/${DATA}_$name.tar.gz  --exclude="*/log/*" --exclude="*/logs/*"  --exclude="*.out" --exclude="*.log" $sysfile
done
for ywfile in   /var/log/xferlog /home/imosadmin/script
do
name=`echo $ywfile|sed -e 's/\///g'`
/bin/tar zcf $backdir/${DATA}_$name.tar.gz $ywfile
done
$rsync -arvzP --password-file=$passfile --port 6001 --delete --progress $backdir/* root@10.0.2.220::backup/$AREA/$IP/$DATA/ --stats
cd $backdir
/bin/rm -rf $backdir/*
 
------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
rsync+inotify 实例
 
实现功能:当web-data 数据修改时,触发rsync进行,实现线上web-server数据实时更新。
-------------------------------------------------------------------------
环境:
Web-Server:
10.0.2.220
Web-path:/var/www/html/test
 
Web-Data:
10.0.2.222
Web-path:/web/wwwroot/webdata/
-------------------------------------------------------------------------
 
Web-Server:
 
安装rsync 略
 
创建同步脚本:
[root@Puppet-Master test]# cat /root/rsync.sh
#!/bin/bash
 
/usr/local/bin/rsync  -avzrtopg --port 6001 --delete --progress   backup@10.0.2.222::webdata  /var/www/html/test --password-file=/etc/rsync.pass
 
[root@Puppet-Master test]# cat /etc/rsync.pass
123456
 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Web-Data:
 
rsync设置:
[root@localhost webdata]# cat /etc/rsyncd.conf
#传输时守护进程的用户ID
uid = root
 
#传输时守护进程的用户组ID
gid = root
 
#端口
port = 6001
 
use chroot = no
 
#最大并发连接数
max connections = 10
 
#是否检查口令文件权限
strict modes = yes
 
timeout = 300
 
#rsync守护进程对应的PID文件路径
pid file = /var/run/rsyncd.pid
 
#指定支持max connections的锁文件
lock file = /var/run/rsyncd.lock
 
#指定rsync日志输出路径
log file = /var/log/rsyncd.log
 
 
#定义模块名称
[webdata]
 
#指定需要备份的文件或目录
path = /web/wwwroot/webdata/
 
#注释
comment = web file
 
#忽略一些无关的I/O错误
ignore errors
 
#no表示客户端可以上传文件,yes表示只读。
read only = no
 
#no表示可以下载,yes表示不能下载。
write only = no
 
#允许连接服务器的主机
hosts allow = 10.0.2.0/24,10.0.28.0/24
 
#当客户请求可以使用模块时,该模块是否被列出。true表示列出。
list = yes
 
uid = root
gid = root
 
#连接该模块的账户
auth users = backup
 
secrets file = /etc/rsync.pass
 
[root@localhost webdata]# cat /etc/rsync.pass
backup:123456
 
/usr/local/bin/rsync --daemon
 
[root@localhost webdata]# ps -ef | grep rsync
root     14048     1  0 Jan09 ?        00:00:00 /usr/local/bin/rsync --daemon
 
 
inotify-tools 官网

 
软件下载:

 
 
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
ll /usr/local/bin/inotifywa*
 
创建web站点同步目录
mkdir /web/wwwroot/webdata/
 
创建同步脚本
[root@localhost wwwroot]# cat /web/wwwroot/inotifyrsync.sh
#!/bin/bash
 
host1=10.0.2.220
src=/web/wwwroot/webdata/
 
 
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $src  |
#更多监控参数介绍参考  man inotifywait 命令
 
while read files
 
do
 
#ssh 10.0.2.220 ' /usr/local/bin/rsync  -avzrtopg --port 6001 --delete --progress /var/www/html/test/  backup@$host::webdata --password-file=/etc/rsync.pass'
ssh $host1 '/root/rsync.sh'
echo "${files} was rsynced" >> /tmp/rsync.log 2>&1
 done
 
添加可执行权限
[root@localhost wwwroot]# chmod a+x /web/wwwroot/inotifyrsync.sh
 
 
设置 登陆web-Server 密钥
[root@Puppet-Slave ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
a4:00:01:51:e0:b3:7d:73:b1:34:e6:ec:ae:4d:ea:bd root@Puppet-Slave
 
cd /root/.ssh/ && chmod 600 id_rsa*
#将密钥传送到被远程服务器上
ssh-copy-id -i /root/.ssh/id_rsa root@10.0.2.220
ssh 10.0.2.220
 
完成
 
测试:当web-data端 /web/wwwroot/webdata/目录有修改,web-server会通过rsync对/var/www/html/test目录进行同步修改操作。
 
 
阅读(1284) | 评论(0) | 转发(0) |
0

上一篇:hadoop内网集群部署

下一篇:Awl +Nmap

给主人留下些什么吧!~~