参考博客:https://www.cnblogs.com/MacoLee/p/5633650.html

一、文件同步很简单
服务端:被动的接收传输过来的数据
客户端:主动提供数据给服务端
安装思路:服务端和客户端都需要安装rsync软件。因为我这里理解的客户端是提供数据给服务端,所以客户端需要实时监测文件的变动,这里的客户端需要安装inotify软件。
安装演示思路:这里按照常规的思路。在服务端安装完rsync软件后,编辑相关的配置文件,并启动rsync。在客户端安装完rsync软件后,不做任何操作,只需要执行相关的同步命令即可。
二、安装rsync软件
1、两种安装方式:(1)、直接使用yum命令安装(本人采用)
yum -y install rsync
(2)、使用编译安装

[root@www ~]# cd /usr/local/src/
[root@www src]# wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz
[root@www src]# tar zxvf rsync-3.0.9.tar.gz
[root@www src]# cd rsync-3.0.9
[root@www rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@www rsync-3.0.9]# make
[root@www rsync-3.0.9]# make install

2、设置密码认证文件和配置文件
(1)、建立用户和密码认证文件(编译安装时的位置)
(只在服务端做配置文件的修改)

[root@www rsync-3.0.9]# echo "web:123" > /usr/local/rsync/rsyncd.passwd

(只在客户端做配置文件的修改)

[root@www rsync-3.0.9]# echo "123" > /usr/local/rsync/rsync.passwd

设置权限为只读

[root@www rsync-3.0.9]# cd /usr/local/rsync
[root@www rsync]# chmod 600 rsyncd.passwd

(2)、建立rsync配置文件(只在服务端做配置文件的修改)
安装方式不同引发的配置文件区别:
<1>、直接使用yum命令安装时

[root@www rsync]# vi /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
uid = root
gid = root
use chroot = no
max connections = 200
timeout = 1000
transfer logging = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
port = 873
ignore errors
#read only = yes
#address = 192.168.248.136 [web]
path = /home
read only = false
write only = yes
hosts allow = 192.168.248.138 192.168.248.136
hosts deny = *
list = false
auth users = web
secrets file = /usr/local/rsync/rsyncd.passwd
#read only = yes
#exclude = test/ #不同步的目录

<2>、使用编译安装(举例)

[root@www rsync]# vi /usr/local/rsync/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 4
strict modes = yes
hosts allow = 192.168.1.101 #可以空格,允许多个
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log [test]
path = /home/test
ignore errors
read only = false
list = false
auth users = backup
secrets file = /usr/local/rsync/rsyncd.passwd

PS:注意这里要将read only 修改为 false, 因为是要将文件同步到该模块的,必须可写

(3)、以守护进程方式启动rsync服务器(客户端不需要启动,就是没有修改配置文件的客户端)
<1>、使用yum命令安装时

rsync --daemon

<2>、使用编译安装时

rsync --daemon --config=/usr/local/rsync/rsyncd.conf

(4)、加入开机自启动

echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf" >> /etc/rc.local

三、安装inotify软件
在客户端(就是要监测文件变化的那端)安装inotify。
(1)、验证rsync是否安装成功
举例1:客户端上执行,客户端向服务端复制文件

/usr/bin/rsync -vzrtopg --progress --password-file=/etc/web.passwd /home/fan web@192.168.248.136::web

举例2:客户端上执行,服务端向客户端复制文件

[root@www rsync]# rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd backup@192.168.1.102::test /home/test

(2)、安装inotify

[root@www rsync]# cd /usr/local/src/
[root@www src]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@www src]# tar zxvf inotify-tools-3.14.tar.gz
[root@www src]# cd inotify-tools-3.14
[root@www inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
[root@www inotify-tools-3.14]# make
[root@www inotify-tools-3.14]# make install

(3)、创建rsync复制脚本
此项功能主要是将客户端的目录/home/fan/里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给服务端的/home里,下面是通过shell脚本实现的。

#!/bin/bash
host=192.168.248.136
src=/home/fan
des=web
user=web /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 --progress --delete --password-file=/etc/web.passwd $src $user@$host::$des
echo "${files} was rsynced" >>/data/logs/rsync.log 2>&1
done

其中host是client的ip,src是客户端要实时监控的目录,des是认证的模块名,需要与client一致,user是建立密码文件里的认证用户。

运行脚本

[root@www rsync]# sh /tmp/rsync.sh & 

把rsync.sh脚本加入到开机启动项里

[root@www rsync]# echo "setsid /usr/local/rsync/rsync.sh &" >> /etc/rc.local

linux文件实时同步的更多相关文章

  1. Linux文件实时同步,可实现一对多

    说明:该功能服务端安装sersync2,客户端安装rsync,原理就是服务端主动推送设定目录下的所有更新的文件到各个客户端rsync接收. rsync大家都知道,是Linux自带的数据同步工具,而se ...

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

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

  3. Linux服务器间文件实时同步的实现

    使用场景 现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/ ...

  4. (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

    Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...

  5. rsync+inotify 实现服务器之间目录文件实时同步(转)

    软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...

  6. rsync+inotify-tools文件实时同步

    rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...

  7. inotify用法简介及结合rsync实现主机间的文件实时同步

    一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...

  8. eclipse 远程文件实时同步,eclipse远程部署插件

    [转自] http://zhwj184.iteye.com/blog/1842730 eclipse 远程文件实时同步,eclipse远程部署插件 github地址:https://github.co ...

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

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

随机推荐

  1. 【翻译】指示器(indicator)的分类

    参考 David Bianco在2015年发布的博文: http://detect-respond.blogspot.com/2013/07/on-misuse-of-indicators.html ...

  2. Linux权限位(含特殊权限位s s t) 及chown\chmod命令使用

    1.普通权限位 ls –l查看文件的属性 [root@oldboy ~]# ls -l -rw-------. 1 root root 1073 Mar 4 22:08 anaconda-ks.cfg ...

  3. Java web项目 上传图片保存到数据库,并且查看图片,(从eclipse上移动到tomact服务器上,之路径更改,包括显示图片和导出excel)

    //项目做完之后,在本机电脑运行完全正常,上传图片,显示图片,导出excel,读取excel等功能,没有任何问题,但是,当打成war包放到服务器上时,这些功能全部不能正常使用. 最大的原因就是,本机测 ...

  4. ctfshow之Web入门刷题记(从89开始,持续更新)

    0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...

  5. Ramnit蠕虫病毒分析和查杀

    Ramnit是一种蠕虫病毒.拥有多种传播方式,不仅可以通过网页进行传播,还可以通过感染计算机内可执行文件进行传播.该病毒在2010年第一次被安全研究者发现,从网络威胁监控中可以看出目前仍然有大量的主机 ...

  6. Docker学习第四天(Dockerfile)

    dockerfile Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个 ...

  7. php 数据转储Excel文件

    1.下载PHPExcel文件 下载地址:https://www.php.cn/xiazai/leiku/1491 2.在php写入以下代码,执行即可 $arr = Db::name('user')-& ...

  8. ctf-工具-binwalk

    binwalk在玩杂项时是个不可缺的工具.1.最简单的,在玩隐写时,首先可以用它来找到其中的字符串例如:在铁人三项,东北赛区个人赛中,有一道题它直接给了一个文件,没有后缀,不知道是什么文件先binwa ...

  9. pdfFactory如何设置限制打印和浏览文档权限

    当我们进行私密文件的分享时,除了要设置密码保护文件内容外,还要注意设置打印限制,防止他人利用打印的方式,进行纸质文件的传播. 在使用pdfFactory安全策略时,我们可以通过设定禁止打印的方式,完全 ...

  10. JUC并发工具包之CyclicBarrier

    1.简介 CyclicBarrier是一个同步器,允许多个线程等待彼此直到达一个执行点(barrier). CyclicBarrier都是在多个线程必须等到彼此都到达同一个执行点后才执行一段逻辑时才被 ...