注:本篇介绍的是单向同步,即A文件同步到B,但B的文件不同步到A,双向同步的在下一篇文章中。

rsync与inotify不再赘述,直接进入实战。

0、背景

两台服务器IP地址分别为:

源服务器:192.168.43.159

目标服务器:192.168.43.231

同步方向:从源服务器(192.168.43.159)的/root/test目录下的所有对文件的增删改实时同步到目标服务器(192.168.43.231)的/root/www_bak/目录下,但反向不同步。

源服务器下需要安装rsync和inotify,目标服务器仅需安装rsync,源服务器做为server端,实时的向目标服务器client端发送数据

一、源服务器配置

1、

先查看本机是否已安装rsync

查看命令rpm -qa |grep rsync

下载好安装包后进入到安装包并增加安装后缀,安装到/usr/local/rsync路径下

[root@nginx rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@nginx rsync-3.0.9]# make
[root@nginx rsync-3.0.9]# make install

注:安装路径非常重要,后续要启动rsync服务必须使用该目录下的文件 

2、设置密码文件

[root@nginx rsync-3.0.]# cd /usr/local/rsync/
[root@nginx rsync]# echo "rsyncpwd" >/usr/local/rsync/rsync1.passwd

当然你也可以手动 通过 vim 编辑该文件,指定密码为rsyncpwd

给与权限600,不然会报错

[root@nginx rsync]# chmod  rsync1.passwd

3、安装inotify

先查看服务器是否支持inotify

ll /proc/sys/fs/inotify

如果有以下3个文件,那么即支持安装inotify

#安装inotify
cd /usr/src/
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify ##该安装位置非常重要,因为安装完inotify文件后需要调用路径下的inotifywait文件
make make make install

4、创建监控与同步脚本

其功能就是:从源服务器(192.168.43.159)的/root/test目录下所有的文件无论是添加、修改、删除文件,能够通过inotify监控到,并通过rsync实时同步到目标服务器(192.168.43.231)的/root/www_bak/目录下。

该脚本要放置在被监控的路径下,如本次被同步路径为/root/test/

vim /root/test/rsync1.sh

#!/bin/bash
host=192.168.43.231
src=/root/test/
des=web
user=webuser
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' -e modify,delete,create,attrib $src | while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync1.passwd $src $user@$host::$des
echo "${files} was rsynced" >>/tmp/rsync.log >&
done

host:目标服务器IP;  src:被同步的本地路径;  des:同步模块名,目标服务器必须一致 ;user:认证用户名,目标服务器的密码文件必须是这个

注意点:其中的/usr/local/inotify/bin/inotifywait 路径在上述inotify安装路径下找到;/usr/local/rsync/rsync1.passwd路径在上述的密码文件路径下找到。

修改权限,给与764权限

[root@nginx tmp]# chmod  rsync1.sh

二、目标服务器安装配置

1、目标服务器也需要安装rsync,和源服务器一样。

2、建立密码文件:

[root@nginx rsync-3.0.]# cd /usr/local/rsync/
[root@nginx rsync]# echo "webuser:rsyncpwd" >/usr/local/rsync/rsync2.passwd

同样要给此文件一个600的权限

chmod 600 /etc/rsync2.passwd

注:在源服务器建立的密码文件,只有密码,没有用户名;而在目标服务器里建立的密码文件,用户名与密码都有。

3、编辑rsync监控文件

本次监控文件放置在rsync的安装路径下/usr/local/rsync

vim /usr/local/rsync/rsync2.conf

uid = root
gid = root
use chroot = no
max connections =
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web]
path = /root/www_bak/
comment = web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.43.159
hosts deny = *
list = false
uid = root
gid = root
auth users = webuser
secrets file = /usr/local/rsync/rsync2.passwd

三、启动服务

a、源服务器启动监控与同步:

sh   /root/test/rsync1.sh &

b、目标服务器启动 rsync监控

/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync2.conf

四、测试同步

Centos7 rsync+inotify两台服务器同步文件(单向)的更多相关文章

  1. Centos 6.5 rsync+inotify 两台服务器文件实时同步

    rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...

  2. rsync配置两台服务器之间的文件备份(同步)

    rsync配置两台服务器之间的文件备份(同步) 前情提要 环境: 192.168.1.2 主服务器 centos 7.7 192.168.1.3 备份服务器 centos 7.7 rsync 安装(两 ...

  3. CentOS7之Rsync+Inotify架构实现实时同步文件和文件夹

    简介:rsync是用来同步文件和文件夹的,inotify是用来实现监听变动而自动同步的 OS:Centos7.3 服务器端:172.16.13.157 客 户 端  :172.16.13.156 目  ...

  4. linux下实现多台服务器同步文件(inotify-tools+rsync实时同步文件安装和配置)

    inotify-tools+rsync实时同步文件安装和配置 注:转载https://www.linuxidc.com/Linux/2012-06/63624.htm

  5. centos7安装rsync及两台机器进行文件同步

    安装及配置 yum -y install rsync #启动rsync服务 systemctl start rsyncd.service systemctl enable rsyncd.service ...

  6. rsync+inotify安装配置 实时同步文件

    安装 #安装inotify 工具 [root@localhost ~]# yum install inotify-tools -y 常用命令 [root@localhost ~]# inotifywa ...

  7. linux两台服务器之间文件/文件夹拷贝

    跨服务器拷贝需要用到的命令是scp. ----------------------拷贝文件夹---------------------------------------------- 把当前文件夹t ...

  8. ftp 两台服务器传输文件 apache

    import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputS ...

  9. linux下两台服务器文件实时同步方案设计和实现

    inux下两台服务器文件实时同步方案设计和实现 假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器  有目录 /opt/test/ 192.168.0.2 目标服务器  有目录 /o ...

随机推荐

  1. Oracle字符集查询及修改

    字符集包括以下四种: 1.oracle服务端字符集 select * from nls_database_parameters; 2.oracle服务器注册字符集 HKEY_LOCAL_MACHINE ...

  2. CURL_模拟登录

    <?php $curl = curl_init(); $url = "http://www.imooc.com/user/login"; //$url = "htt ...

  3. C/C++ scanf和gets 区别 , printf和puts区别

    ref 1. scanf和gets区别 | 博客园 2. printf和puts区别 | CSDN scanf和gets都能从输入流stdin读取字符串,那么它们有什么区别呢? scanf 留回车:开 ...

  4. Ubuntu 16.04 安装Redis服务器端

    ~ sudo apt-get install redis-server 安装完成后,Redis服务器会自动启动,我们检查Redis服务器程序 检查Redis服务器系统进程 ~ ps -aux|grep ...

  5. Android抓包分析-fiddler版

    本文介绍的是如何使用Fiddler工具抓取Android应用的HTTP协议的数据包 工具 Genymotion模拟器 笔记本电脑一台(Win7) Fiddler(v4.6.2),下载地址:http:/ ...

  6. 什么是redis事务

    一.什么是redis事务? 可以一次性执行多条命令,本质上是一组命令的集合.一个事务中的所有命令都会序列化,然后按顺序地串行化执行,而不会被插入其他命令 二.Redis 事务可以做什么? 一个队列中, ...

  7. 关联容器:unordered_map详细介绍

    版权声明:博主辛辛苦苦码的字哦~转载注明一下啦~ https://blog.csdn.net/hk2291976/article/details/51037095 介绍 1 特性 2 Hashtabl ...

  8. idea中scala语言自动补全变量的同时,也自动补全类型

    IDE是IDEA,scala中,在new一个对象时,通过快捷键ctrl + Alt + V自动补全变量,但是我还想自动补全变量的类型,就像图中所示,在Specify type前面自动帮你打勾. 可以按 ...

  9. 【PAT甲级】1038 Recover the Smallest Number (30 分)

    题意: 输入一个正整数N(<=10000),接下来输入N个字符串,每个字符串包括至多8个字符,均为数字0~9.输出由这些字符串连接而成的最小数字(不输出前导零). trick: 数据点0只包含没 ...

  10. 「POJ3613」Cow Relays

    「POJ3613」Cow Relays 传送门 就一个思想:\(N\) 遍 \(\text{Floyd}\) 求出经过 \(N\) 个点的最短路 看一眼数据范围,想到离散化+矩阵快速幂 代码: #in ...