rsync+inotify实现上行实时同步

rsync:一款开源备份工具;实现不同主机间镜像同步整个目录树;支持增量备份、权限、压缩等

rsync角色

  • 发起端:负责发起rsync同步,操作客户机(相当于C端)
  • 备份源:负责响应rsync的请求的服务器(相当于S端)

同步的方向

  • 上行同步(上传):备份源提供文档的目标位置(date在发起端),发起端使用用户必须对目录有写入权限
  • 下行同步(下载):备份源负责提供文档原始位置(date在备份源),发起端使用用户只需对data有读取权限即可

搭建rsync备份源

vim /etc/rsyncd.db
  hehe:123      //用户名:密码
vim /etc/rsyncd.conf
uid = nobody            //运行用户
gid = nobody            //运行组
use chroot = yes        //用户禁锢到访问目录
address = 192.168.1.10      //监听IP
port 873            //监听端口
log file = /var/log/rsyncd.log  //日志文件位置
pid file = /var/run/rsyncd.pid  //PID运行文件位置
hosts allow = 192.168.1.0/24    //运行同步的网段
[data]              //同步名
    path = /data        //同步的目录
    comment = Document Root //描述
    read only = no
    write = yes         //用户可写
    dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z    //同步时不需压缩的格式
    auth users = hehe       //认证用户
    secrets file = /etc/rsyncd.db           //用户帐号文件位置
chmod 600 /etc/rsync.db
mkdir /data && chmod 777 /data
rsync --daemon      //独立模式运行rsync服务;停止rsync(killall rsync && rm -rf /var/run/rsyncd.pid)

client同步(注意将write = yes增加)

下行:rsync [ 选项 ] 远程目录 本地目录

上行:rsync [ 选项 ] 本地目录 远程同步名

选项
-a:提供归档和属性信息
-v:显示详细信息
-z:压缩
-H:保持硬链接
-u:可实现增量备份

mkdir /a    
rsync -avzH --delete rsync://[email protected]/data/ /a/        //将备份源中的数据下载同步到当前位置
rsync -avzH --delete [email protected]::data /a/
  • 两条命令任选其一
rsync -avzH --delete /a/ rsync://[email protected]/data         //将发起端的数据上传同步到备份源;用户在备份源必须有写入权限
rsync -avzH --delete /a/ [email protected]::data
  • 两条命令任选其一

计划任务实现定时下行同步

vim /etc/profile
  export RSYNC_PASSWORD=123    //将rsync密码加入环境变量
source /etc/profile
crontab -e
  * */4 * * *   /usr/bin/rsync -avzHu --delete rsync://[email protected]/data /a        //定时下行同步
  * */4 * * *   /usr/bin/rsync -avzHu --delete /a rsync://[email protected]/data        //定时上行同步

rsync+inofity:注意用于上行实时同步(以下操作全在客户端)


安装inotify-tools

tar  zxvf  inotify-tools-*.tar.gz  -C  /usr/src/
cd  /usr/src/inotify-tools-*/
./configure && make && make install

inotify的使用

vim  /etc/sysctl.conf
  fs.inotify.max_queued_events = 16384   ##监控事件队列数
  fs.inotify.max_user_instances = 1024   ##监控实例数
  fs.inotify.max_user_watches = 1048576  ##监控的文件数量
sysctl  -p
vim  rsync_inotify.sh   ##实时同步脚本

  #!/bin/bash

  RSYNC="rsync -avzHu --delete /a/ rsync://[email protected]/data"

  INT_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /a"

  export RSYNC_PASSWORD=123 //可解决rsync同步时,无需输入密码

  $INT_CMD | while read DIRECOTRY EVENT FILE;do

  $RSYNC 1>/dev/null 2>/var/log/rsync_err.log

  done
chmod +x rsync_inotify.sh    //给予脚本执行权限
rsync_inotify.sh &   //启动脚本

原文地址:http://blog.51cto.com/13770206/2170441

时间: 2024-11-05 20:32:28

rsync+inotify实现上行实时同步的相关文章

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实现数据实时同步脚本文件

将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133.96.7.101 host3=133.96.7.102 src=/data/www/ dst1=web1 dst2=web2 dst3=web3 user1=web1 user2=web2 user3=web3 /usr/local/inotify/bin/inotifywait -mrq --ti

[转帖]sersync基于rsync+inotify实现数据实时同步

sersync基于rsync+inotify实现数据实时同步 https://www.jianshu.com/p/d532a34e5cc5 前言 提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会使用ftp/sftp等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输. 原文地址:https://www.cnblogs.com/nbxcnxvcnb/p/12393252.html

Rsync+inotify实现文件实时同步

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

rsync + inotify 实现数据实时同步

要求:两台Web服务器实现数据同步(我这里使用的是Centos 6.2-x64) 服务器一:172.16.11.126 服务器二:172.16.11.127 一.配置ssh备份源172.16.11.126(这里推荐使用专用的普通用户,注意相应的权限问题,如遇特殊情况使用root用户也可以,即不用考虑权限问题了. ) 1.新建备份用户rget rput 分别用来上传下载 [root@localhost ~]#  useradd rget [root@localhost ~]#  useradd r

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

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

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

安装 #安装inotify 工具 [root@localhost ~]# yum install inotify-tools -y 常用命令 [[email protected] ~]# inotifywait -rm /data/ \\实时监控/data的所有事件(包括文件的访问.写入.修改.删除等) [[email protected] ~]# inotifywait -mrq --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f' > -e mo

rsync+inotify实现代码实时同步

rsync rsync是lunix系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. 优点: 1).可以镜像保存整个目录树和文件系统. 2).可以很容易做到保持原来文件的权限.时间.软硬链接等等. 3).无须特殊权限即可安装. 4).快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件.rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽. 5).安全:可以使用s

rsync+inotify实现文件实时同步-步骤详解

实验拓扑(centos7下):192.168.80.181 服务器端(主机名www.aa.com)192.168.80.182 客户端(主机名www.ab.com)1.使用SSH源:安装rsync,服务端和客户端同时安装,只使用客户端命令就OK了.systemctl stop firewalldsetenforce 0yum install -y rsync---以上三句在服务器端和客户端都要执行---------rsync -avz [email protected]:/tmp/ /opt/