rsync+inotify搭建

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

1、检查是否安装了rsync

[[email protected] 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服务

[[email protected] opt]# netstat -anlpt | grep rsynctcp        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 [email protected]::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
[[email protected] 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 [email protected]$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分钟日志记录不到  
时间: 2024-10-28 17:03:43

rsync+inotify搭建的相关文章

rsync+inotify搭建实时同步系统

Rsync 优点 rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期地备份文件服务器数据到远程服务器上,对本地磁盘定期进行数据镜像等. Rsync 不足 随着应用系统规模的不断扩大,对数据的安全性和可靠性提出了更高的要求,rsync便暴露出了很多不足之处.首先,rsync同步数据时,需要扫描所有文件后进行比对,然后进行差量传输.如果文件数量达到了百万量级及以上时,扫描文件就非常耗费时间,有时还会出现只是很少一部分数据发生了变化,因

利用rsync+inotify搭建实时同步系统

系统环境(本例只列举一个服务节点): 内容发布节点server1:192.168.1.154 服务节点    c1:192.168.1.148 C1: #安装配置rsync [[email protected] ~]# yum install rsync -y [[email protected] ~]#vim /etc/rsyncd.conf uid = nobody gid = nobody ignore errors read only = no write only = no list 

CentOS6.4_64位下搭建Rsync+Inotify实现实时同步

CentOS6.4_64位下搭建Rsync+Inotify实现实时同步 rsync是linux下的文件同步服务,功能简单来说就是服务端打开873端口,客户端连接这个端口,并对服务器端配置的目录进行同步,可以理解为客户端比对服务器端资源后,对增量或者差异的数据进行增删改操作,功能支持上传(推送)或下载(获取)比对,也就是远程数据比对本地数据而后对远程数据进行增删改操作,以及本地数据比对远程数据然后对本地数据进行增删改操作. centos6.4下默认已经安装,只需保证依赖服务xinetd开启即可.

sersync基于rsync+inotify实现数据实时同步

一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192.168.1.243 实时同步/var/atlassian目录到从服务器. 二.实施 1.从服务器192.168.1.243 rsync服务搭建 1.1安装软件包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz tar xf r

Rsync+inotify实现文件实时同步

数据备份.文件备份是运维.DBA等岗位最熟悉不过的话题,这里不介绍数据库的备份,简单介绍一下文件同步工具,这样的工具有很多,Windows环境下有Goodsync.FreeFileSync等,Linux下rsync.unison等,常用的实时同步,是几种工具的组合,经过组合的工具达到文件实时同步的效果. 一.常用实时同步方案 1.NFS网络文件系统 该方案是分布式架构中,解决不同节点对同一资源访问的问题,搭建NFS服务器,将其挂载在不同的节点,每个节点将公用的数据存储在NFS服务器上,实现文件的

rsync+crontab(rsync+inotify)

一.rsync介绍 rsync全称remote sync,是一种更高效.可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效,但是rsync本身是一种非加密的传输,可以借助-e选项来设置具备加密功能的承载工具进行加密传输 二.rsync的工作模式 1.shell模式,也称作本地模式 如:rsync -av dir1   /tmp/ 2.远程shell模式,此时可以利用ssh协议承载其数据传输过程 如:rsync -av

通过rsync+inotify实现数据实时备份同步

一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从服务器172.26.7.51 实时同步/home/ 及/download 目录到从服务器 二.实施方法 1.从服务器172.26.7.51 rsync服务搭建 1.1下载软件包至从服务器 下载地址:http://rsync.samba.org/ftp/rsync/src 可根据环境需求下载相应的软件

rsync+inotify实现服务器之间文件实时同步

1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的.而且正在发生变化

rsync+inotify实现服务器之间文件实时同步--转

之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道主服务器给备份服务器传输了多少文件,磁盘空间就那么大,做备份的原因:一个是为了保持文件,另外一个是解决主服务器的磁盘饱满问题,但由于不知道备份服务器到底接收了多少文件,所以主服务器里的文件不敢删除(如果没有备份的情况下删除,问题就严重了,我这个是政府的项目,服务器里的文件都是重要的,删错了就走人~~