rsync+inotify-tools实时同步

rsync概述:

rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步

Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。你可以使用它进行本地数据或远程数据的复制,Rsync可以使用SSH安全隧道进行加密数据传输。Rsync服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。Rsync使用TCP 873端口。



实验描述:

192.168.1.155  ###目标主机(主)

192.168.1.156  ###源主机(客户端)

通过rsync将源主机上的test1文件夹中的文件复制到目标主机test文件夹中。

然后使用cron定时任务定时执行

关闭两台服务器的防火墙( systemctl stop firewalld、setenforce 0)



rsync安装配置:

在源主机配置:

[[email protected] ~]# yum -y install rsync

[[email protected] ~]# mkdir /root/test1

[[email protected] ~]# vim /etc/rsync_exclude.lst   ###指定要排除复制的文件或目录

123
123.txt  ####指定排除123、123.txt文件或目录

在test1文件夹中创建一个test.123文件,便于同步时,看是否成功



在目标主机配置:

[[email protected] /]# mkdir /root/test

[[email protected] /]# yum -y install rsync

[[email protected] /]# vim /etc/rsyncd.conf


uid = nobody

gid = nobody

use chroot = yes

max connections = 4

pid file = /var/run/rsyncd.pid

exclude = lost+found/

transfer logging = yes

timeout = 900

ignore nonreadable = yes

dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

path = /root/test

hosts allow = 192.168.1.156

hosts deny = *

[[email protected] /]# systemctl start rsyncd

[[email protected] /]# systemctl enable rsyncd



配置完成后,在源主机上执行rsync,并设置cron定时任务

[[email protected] ~]# rsync -avz --delete /root/test1/ 192.168.1.155:/test    ###az参数是增量备份   aP是完整备份


[[email protected] ~]# rsync -avz --delete /root/test1/ 192.168.1.155:/test

The authenticity of host ‘192.168.1.155 (192.168.1.155)‘ can‘t be established.

ECDSA key fingerprint is df:21:e3:6c:36:9a:9d:b5:7e:28:ec:ba:a2:a9:f8:fb.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.1.155‘ (ECDSA) to the list of known hosts.

[email protected]‘s password:

sending incremental file list

./

test.123

sent 90 bytes  received 34 bytes  22.55 bytes/sec

total size is 0  speedup is 0.00

[[email protected] ~]#

[[email protected] ~]# crontab -l

* 02 * * * rsync -avz --delete /root/test1/ 192.168.1.155:/test

rsync中的参数:

-r 是递归
  -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
  -z 传输时压缩;
  -P 传输进度;
  -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
  -e ssh的参数建立起加密的连接。
  -u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
  --progress是指显示出详细的进度情况
  --delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
  --password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。

--bwlimit   rsync限速参数(限制速度很简单,添加个参数即可bwlimit,后面的值是多少k Bytes/s,有些机房会限制机器的流量,为了不触及底线,在使用scp和rsync的时候都要注意。

为了避免你的scp或者rsync因为无良&懒惰的OPS设置防火墙的偷懒而造成的断流现象,我们必须对自己的数据传输进行一定的限流措施,慢一点总比被断了的好)



Rsync+Inotify-tools实现数据实时同步

上面已经说过,使用rsync进行同步,就算是定时任务,也不是实时的,这时我们要用到一个软件进行辅助  inotify-tools

inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数

下载地址:https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

由于rsync同步时,要输入对方的账号密码,每次同步时都要输入,这时可以用ssh免秘钥登陆,前面章节已经讲过,这里不做叙述。

1.inotify安装步骤:


wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

tar zvxf inotify-tools-3.13.tar.gz

cd inotify-tools-3.13/

./configure && make && make install

2.编写脚本

vim /auto_inotify.sh (这里是从rsync服务器同步到客户端,推流)


#!/bin/sh

src=/root/test/

des=/root/test1/

ip=192.168.1.156

inotifywait -mrq --timefmt ‘%d/%m/%y-%H:%M‘ --format ‘%T %w%f‘ -e modify,delete,create,attrib ${src} | while read file

do

for i in $ip

do

/bin/rsync -a --delete $src [email protected]$ip:$des

done

done

解释:

#!/bin/sh

src=/root/test/  ###inotify监控的目录 (服务端目录)

des=/root/test1/###客户端目录

ip=192.168.1.156###客户端IP

inotifywait -mrq --timefmt ‘%d/%m/%y-%H:%M‘ --format ‘%T %w%f‘ -e modify,delete,create,attrib ${src} ###检查服务器哪个文件在实时变化 | while read file  ###读取文件

do

for i in $ip   ###通过循环进行同步

do

/bin/rsync -a --delete $src [email protected]$ip:$des

done

done

3.运行脚本并在后台执行

[[email protected] test]# 【nohup】sh /auto_inotify.sh &(最好加上nohup 如果只加上&那么关闭终端,运行程序也随之关闭加上nohup终端关闭后台也会运行)

[1] 8856


nohup sh /auto_inotify.sh &

[email protected] test]# ps -ef | grep auto_inotify.sh

root     16486     1  0 11:32 ?        00:00:00 sh /auto_inotify.sh

root     16488 16486  0 11:32 ?        00:00:00 sh /auto_inotify.sh

root     16573 16493  0 11:33 pts/1    00:00:00 grep --color=auto auto_inotify.sh

[[email protected] test]# ps -ef | grep inotifywait

root     16487 16486  0 11:32 ?        00:00:00 inotifywait -mrq --timefmt %d/%m/%y-%H:%M --format %T %w%f -e modify,delete,create,attrib /root/test/

root     17545 16493  0 11:37 pts/1    00:00:00 grep --color=auto inotifywait

扩展:nohup

原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。(也就是原本输出在屏幕上的,现在输到一个文件中,相当于一个日志)

时间: 2024-10-05 23:58:35

rsync+inotify-tools实时同步的相关文章

rsync的简单介绍及rsync+inotify实现实时同步更新

Rsync的简单介绍及rsync+inotify实现实时同步更新 rsync是类unix系统下的数据镜像备份工具--remotesync.一款快速增量备份工具 Remote Sync,远程同步支持本地复制,或者与其他SSH.rsync主机同步.Rsync是超级进程来管理的,服务端口为873. 特点: 1.可以镜像保存整个目录树或文件系统: 2.有较高的数据传输效率: 3.可借助于SSH实现安全数据传输: 4. 支持匿名传输 工作模式: 1.shell模式,也称作本地模式 2.远程shell模式,

第三十四天-rsync+inotify实现实时同步案例

推荐: Rsync结合Inotify 实时同步配置 rsync+inotify实现实时同步案例 rsync+inotify实现多台服务器之间数据实时同步 Linux下Rsync+Inotify-tools实现数据实时同步

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

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

linux rsync +inotify 实现 实时同步

前言:     rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题. 一.基本环境 系统:CentOS 2.6.32-220.el6.x86_64软件包版本:rsync-3.0.6-12.el6.x86_64                    inotify-tools-3.14 下载链接:百度   inotify

通过rsync+inotify实现实时同步

需求:web服务器未做存储上的HA,为了保证主备服务器上目录及文件能够实时同步,当主服务器宕机时可快速切换到备服务器上,需将主服务器上的某些目录的文件实时同步到备服务器上 那么我选择了rsync+inotify实现实时同步 首先要了解是从哪台服务器同步到哪台服务器,不能弄反了,尤其是生产系统,且在生产系统中,先做测试目录,如果生产服务器上数据量不大,应先做好备份工作 先说环境 OS:linux rhel6.2 x86_64 192.168.10.72 安装rsync 配置rsync.conf19

实战:配置rsync+inotify实现实时同步备份

实战:配置rsync+inotify实现实时同步 Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录或文件的变化及时作出响应. 使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性.周期过密等问题. inotify

rsync+inotify实现实时同步

1.数据同步: A服务器的一个目录同步到B服务器上的一个目录 方法是: 可以在A服务器上把这个目录共享(如ftp,http等),然后B服务器上写shell脚本,用crontab做定时任务下载过来(数据同步不实时) 实时同步 方法是: rsync远程目录实时同步 drbd远程存储实时同步(很老的方案) 共享存储,就是同一个磁盘设备同时被很多人用 分布式存储(云存储) 2.同步.异步和远程同步 sync同步 async异步 rsync 远程同步 这里主要说rsync,在开始之前需要了解以下几个问题:

Rsync+inotify 实现实时同步数据文件

什么是Rsync? rsync可以实现增量备份,配合inotify可以实现时事的数据备份 Rsync的三种工作模式 1)本地备份,相当于 cp 命令 将 /etc/hosts 文件拷贝到 /tmp/ 目录下 rsync -avz /etc/hosts /tmp/ 删除一个目录 先新建一个空目录,然后使用 rsync 命令同步 mkdir /zhao 添加 --delete参数,目录 zhao 为空 rsync --delete /zhao/ /tmp/ 命令解释:以前面的目录为准,前面目录有啥后

rsync + inotify 数据实时同步

一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能类似ssh带的scp命令,但又优先于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝.当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优先于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝.利用rsync还可以实现删除文件

2015-07-07 rsync+inotify实现实时同步

转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的.而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进