码迷,mamicode.com
首页 > 其他好文 > 详细

rsync+inotify搭建

时间:2016-02-29 14:37:26      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:

最近线下BI准备要做数据仓库,需要线上的日志,现在线上的日志是NFS挂载过来的,二次挂载没成功,所以考虑用rsync来做。

 

1、检查是否安装了rsync

[root@bi-1 opt]# rpm -qa | grep rsync
rsync-3.1.1-1.el6.rfx.x86_64

 2、在slave端新建用户

useradd rsync -s /sbin/nologin  -M   #添加rsync用户
mkdir  /home/logs                    #Rsync工作的后台目录
chown rsync.rsync  /home/logs        #更改模块目录的用户组    

 

3、编写rsync的配置文件/etc/rsyncd.conf

# rsyncd.conf - Example file, see rsyncd.conf(5)
#

# Set this if you want to stop rsync daemon with rc.d scripts
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log

lock file = /var/run/rsync.lock
# Edit this file before running rsync daemon!! uid = root gid = root use chroot = no #max connections = 4 #syslog facility = local5 [backup]              #模块对应的目录 read only = false           #网络权限可写 hosts allow = 192.168.10.0/24  #对应的网段 hosts deny = 0.0.0.0/32 auth users = rsync         #虚拟用户 secrets file = /etc/rsync/rsyncd.pwd  #虚拟用户密码文件

 

4、配置虚拟用户密码文件

echo "rsync:123456" >/etc/rsync/rsyncd.pwd

chmod 600 /etc/rsync/rsyncd.pwd

rsync --daemon #启动rsync服务

[root@bi-1 opt]# netstat -anlpt | grep rsync
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      12243/rsync         
tcp        0      0 :::873                      :::*                        LISTEN      12243/rsync 

 

#以上操作都是在slave上操作的

 

5、在master上测试推送

echo "123456" > /etc/rsync/rsyncd.pwd
chmod 600 /etc/rsync/rsyncd.pwd

echo "hello rsync" > test.text

rsync -avz text.txt rsync@192.168.18.8::backup --password-file=/etc/rsync/rsyncd.pwd

rsync常用参数的具体解释如下:
  -v, --verbose 详细模式输出
  -q, --quiet 精简输出模式
  -c, --checksum 打开校验开关,强制对文件传输进行校验
  -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
  -r, --recursive 对子目录以递归模式处理
  -l, --links 保留软链结

  -L, --copy-links 想对待常规文件一样处理软链结
  -p, --perms 保持文件权限
  -o, --owner 保持文件属主信息
  -g, --group 保持文件属组信息
  -D, --devices 保持设备文件信息
  -t, --times 保持文件时间信息
  -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
  -n, --dry-run现实哪些文件将被传输
  -W, --whole-file 拷贝文件,不进行增量检测
  --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
  --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
  --delete 删除那些DST中SRC没有的文件
  -z, --compress 对备份的文件在传输时进行压缩处理
  --log-format=formAT 指定日志文件格式
  --password-file=FILE 从FILE中得到密码

 

#以下操作都是在master上操作的,操作完了检测下slave上文件是不是传过去了

 

6、在master上安装inotify

检测当前系统是否支持inotify
[root@dns etc]# ll /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Feb 29 10:29 max_queued_events  #表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
-rw-r--r-- 1 root root 0 Feb 29 10:29 max_user_instances #表示每一个real user ID可创建的inotify instatnces的数量上限。
-rw-r--r-- 1 root root 0 Feb 29 10:29 max_user_watches   #表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小
 

 

7、下载inotify源码包并编译安装

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

tar zxf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure --prefix=/usr/local/inotify-3.14

make && make install

 

8、编写后台运行脚本

mkdir /usr/local/inotify-3.14/etc

cat  /usr/local/inotify-3.14/etc/inotify.sh

#!/bin/bash

host=192.168.18.8
src=/mnt/nginx_log/
dst=backup
user=rsync
rsync_passfile=/etc/rsync.password

inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write,delete,create,attrib,modify $src | while read file
do
cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host::$dst --password-file=$rsync_passfile >/dev/null 2>&1
done
exit 0

bash -x inotify.sh #检测下有没有错误
sh inotify.sh & #没有错误就放入后台运行

inotifywait常用参数的具体解释如下:
  access #文件或目录被读取
  modify #文件或目录被修改
  attrib #文件或目录属性被改变
  create #文件或目录被创建在当前目录
  delete #文件或目录被删除

 

9、实时同步测试

touch 1   #新建个文件

去slave上看有没有被同步过去,如果同步过去,说明就成功了。

 

 

10、在slave端写一个计划任务来修改文件名

  因为每天只有一个日志文件,所有要对文件名修改,并放到一个单独的目录存储

cat  on-line.sh
#!/bin/bash
datetime=`date +%Y%m%d`

mv /home/logs/access.log   /DB/on-line/access.log.$datetime 
mv /home/logs/error.log /DB/on-line/error.log.$datetime

 

crontab -e

58 23 * * * /bin/bash /opt/on-line.sh >/dev/null 2>&1  #每天晚上11.58分执行,这样会有2分钟日志记录不到  

rsync+inotify搭建

标签:

原文地址:http://www.cnblogs.com/nika86/p/5227149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!