rsync + inotify 实现数据时时同步,和跨系统实现数据同步。

一.rsync客户端与服务端结构图:

日常维护中,数据备份算是比较基本的一个了,rsync很好的解决了繁琐的数据时时同步,不需要手动指定变化的数据,而是由rsync自动检测,发现数据不一致时,就开始备份或者推送到其他rsync主机上。inotify是linux监控文件变化的监控工具,可以配合rsync更好的完成工作。很多公司操作系统可能都是不统一的,上面就又添加的一个windows的主机,已实现将在windows主机上将linux主机中的数据拉取到win主机上。

二.rsync简介。

1.)rsync简介,rsync是一个数据同步工具,可以根据数据的变化时时同步,和cp命令及scp命令使用相差不多,命令选项方面也几乎一致。

2.)rsync的特点:可以镜像保存整个目录树或文件系统,传输速率可观,支持ssh实现安全数据传输,支持匿名传输。

3.)rsync工作模式:

shell模式,和cp命令相似,也称为本地文件传输模式。

远程shell模式,和scp命令相似,可以利用ssh协议承载远程传输过程。

列表模式,列表方式出数据源中的内容,也可以远程使用。

服务模式,此时rsync是一个守护进程,能接收客户端数据同步。

4.)rsync命令选项:

5.)rsync几种模式使用。rsync默认就是安装好的。

rsync远端shell模式,本地传输数据到远端。

# rsync -r --stats -e ssh --progress /etc/pam.d [email protected]:/backup/data
# ls
pam.d

#注意/pam.d 和/pam.d/ 传输时候的差距。

# rsync -r --stats -e ssh --progress /etc/pam.d/[email protected]:/backup/data
# ls
atd         cvs                  newrole           polkit-1  runuser           sshd        su-l
chfn        eject                other             poweroff  runuser-l          ssh-keycat  system-auth-ac
chsh        fingerprint-auth-ac  pam.d             reboot   setup              su          system-config-network
config-util halt                 passwd            remote    smartcard-auth-ac  sudo       system-config-network-cmd
crond       login               password-auth-ac  run_init  smtp.postfix       sudo-i

6.)远端接收数据到本地。

# rsync -a --stats --progress [email protected]:/etc /tmp
# ls /tmp/
etc

7.)rsync列表模式。

# rsync -nv [email protected]:/tmp/
[email protected]‘s password: 
receiving file list ... done
drwxrwxrwt       4096 2014/08/22 03:40:01 .
-rw-r--r--     813976 2014/08/12 17:59:44apr-1.5.0.tar.bz2
-rw-r--r--     695303 2014/08/12 17:59:44 apr-util-1.5.3.tar.bz2
-rw-r--r--    4780289 2014/08/12 17:59:44 httpd-2.4.4.tar.bz2
-rw-r--r--    4724343 2012/06/29 19:27:06 phpMyAdmin-3.5.1-all-languages.tar.bz2
-rw-r--r--    4657514 2012/03/12 16:58:14 wordpress-3.3.1-zh_CN.zip
-rw-------          0 2014/08/12 17:05:23 yum.log
drwxrwxrwt       4096 2014/08/21 21:44:13 .ICE-unix
drwxr-xr-x       4096 2014/08/12 18:08:03 apr-1.5.0
drwxr-xr-x       4096 2014/08/12 18:10:18 apr-util-1.5.3
drwxr-xr-x       4096 2014/08/12 18:17:58 httpd-2.4.4
drwxr-xr-x       4096 2014/08/12 23:53:21 phpMyAdmin-3.5.1-all-languages
 
sent 11 bytes received 369 bytes  152.00bytes/sec
total size is 15671425  speedup is 41240.59 (DRY RUN)

8.)rsync服务模式。

8.1)安装超级守护进程,并开启rsync服务。

# yum -y install xinetd #安装超级守护进程。
 
# vim /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good additionto an ftp server, as it #      allows crc checksumming etc.
service rsync
{
       disable = no     #启用rsync
       flags           = IPv6
       socket_type     = stream
       wait            = no
       user            = root
       server          = /usr/bin/rsync
       server_args     = --daemon
       log_on_failure  += USERID
}
 
# chkconfig rsync on #开机启动

8.2)编辑rsync配置文件,默认是没有的。

# vim /etc/rsyncd.conf 
# Global Settings
uid = nobody                   #运行进程的用户。
gid = nobody                   #运行进程的组。
use chroot = no                #运行rsync时不可以使用chroot。
max connections = 10           #最多允许多少客户端同时请求数据。
strict modes = yes             #启用严格模式。
pid file = /var/run/rsyncd.pid #rsync的pid文件位置。
log file = /var/log/rsyncd.log #rsync日志位置。
 
# Directory to be synced
[tools]                        #类似于共享名。
path = /backup/data            #数据同步目录。
ignore errors = yes            #传输时忽略错误信息。
read only = no                 #是否只读。
write only = no                #是否为只写。
hosts allow = 172.16.0.0/16    #允许同步的网段。
hosts deny = *                 #由上面过滤下来,超出172.16.0.0网段的都不允许同步。
list = false                   #是否允许远端列出目录下的文件。
uid = root                     #共享使用哪个用户身份运行。
gid = root                     #共享使用哪个组身份运行。

8.3)重启xinetd,查看rsync监听端口。

# /etc/init.d/xinetd start #启动超级守护进程。
Starting xinetd:                                          [  OK  ]
# ss –tnl  #rsync监听在873端口
State     Recv-Q Send-Q                                   Local Address:Port                                     PeerAddress:Port 
LISTEN     0     64                                                 :::873

9)客户主机向rsync服务主机推送数据。

切换到172.16.32.10主机

# rsync /etc/fstab 172.16.32.11::tools

10.)在回到rsync主机看看/backup/data下的数据。

# ls /backup/data/ #rsync主机查看
fstab

11.)另外一种方法,基于rsync协议的推送。

# rsync -a /etc/pam.d  rsync://172.16.32.11/tools
 
# ls /backup/data/  #rsync主机查看
pam.d

12.)远端主机向rsync主机拉取数据。

# rsync -a 172.16.32.11::tools/ /tmp
 
# ls /tmp/ #rsync主机操作
  pam.d

三.rsync + inotify 实现数据时时同步。

1.)infotify简介:

inotify在Linux内核2.6.13上已经被添加到内核中,是一个可以跟踪文件数据变化的监控工具,结合rsync,对发生变化的数据时时推进同步。

2.)查看内核版本,以及infotify文件位置。

# uname -r
2.6.32-431.el6.x86_64
# ls -l /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Aug 20 17:26max_queued_events
-rw-r--r-- 1 root root 0 Aug 20 17:26max_user_instances
-rw-r--r-- 1 root root 0 Aug 20 17:26max_user_watches

3.)客户端安装inotify-tools,实现两个主机目录数据同步。

# rpm -ql inotify-tools
/usr/bin/inotifywait #监控文件变化命令。
/usr/bin/inotifywatch #监控时间变化,访问次数等。
…

4.)inotify命令选项。

5.)添加inotify时时监控脚本,实现数据时时同步。

# vim /usr/local/bin/inotify.sh
#!/bin/bash
/usr/bin/inotifywait -mrq --timefmt ‘%d/%m/%y%H:%M‘ --format ‘%T %w%f‘ -e modify,delete,create,attrib /data/ | while readfile
do
/usr/bin/rsync -vzrtopg --delete --progress /data/  [email protected]::tools
echo "${files} was rsynced" >>/var/log/rsync.log 2>&1
done

6.)客户端添加一个数据,测试是否rsync+inotify客户端和rsync服务端数据是否同步。

使用bash –x 可以看到脚本的执行过程。

# bash -x /usr/local/bin/inotify.sh 
+ read file
+ /usr/bin/inotifywait -mrq --timefmt ‘%d/%m/%y%H:%M‘ --format ‘%T %w%f‘ -e modify,delete,create,attrib /data/
#当我在客户端创建一个nihao的时候
sending incremental file list
./
nihao/ #这里会显示出来新创建的数据
 
sent 68 bytes received 16 bytes  168.00bytes/sec
total size is 0 speedup is 0.00
+ echo ‘ was rsynced‘
+ read file

7.)再去rsync服务端查看下是否同步。

# ls /backup/data/
nihao

可以定义cron任务计划,每分钟执行一次。

*/1 *  *  *  */bin/sh /usr/local/bin/inotify.sh & &>/dev/null

四.在windows rsync客户端主机上拉取linux数据实现同步。

window操作系统为WindwosServer 2008 R2。

1.)提前安装好rsync软件,window版本。

2.)使用2008系统的PowerShell查看rsync的端口号。检查是否启动。

3.)开始拉取linux主机上的数据。

数据可以同步了。

总结:即使在rsync服务器端删除了数据也没关系,在下一次执行脚本的时候,会把缺失的数据一起补回去。这里没有使用rsync用户验证,一般服务器都是有两块网卡,同步数据的时候都是使用内网网卡,外网卡需要支撑线上业务。既然使用内网网卡,rsync主机端也定义了合法网段才给同步数据,所以就不做用户认证了。

时间: 2024-08-24 14:50:21

rsync + inotify 实现数据时时同步,和跨系统实现数据同步。的相关文章

使用图片跨域方式获取图片数据 使用 jsonp 方式跨域获取数据

使用图片跨域方式获取图片数据 server.get(`/mockImg`, (req, res, next) => { // 使用图片跨域方式获取图片数据 req.headers.origin && res.setHeader(`Access-Control-Allow-Origin`, req.headers.origin) res.setHeader(`content-type`, `image/gif`) res.setHeader(`data`, `image/gif`) v

ScalaPB(4): 通用跨系统protobuf数据,sbt设置

我们知道,在集群环境节点之间进行交换的数据必须经过序列化/反序列化处理过程,而在这方面protobuf是一个比较高效.易用的模式.用户首先在.proto文件中用IDL来定义系统中各种需要进行交换的数据类型.然后用protoc编译器自动产生相关的源代码,里面包括了完整的序列化处理函数.在一个集成的系统环境内,protobuf数据必须保持与所有系统的松散耦合,不能对这些用户系统有任何依赖.这样把protobuf数据类型和相关的序列化/反序列化函数打成一个独立的包,由用户系统各自引用就是一种最佳解决方

rsync+inotify实现同步数据

1.rsync man一下sync,就会发现:sync-flush file system buffers,它是一个把缓冲区中的数据同步到文件系统中的一个命令:而rsync其实就是remote rsync,它是一个远程同步工具,兼具cp和scp的功能,rsync命令的使用几乎和scp是一样一样的.rsync是通过超级守护进程xinetd进行触发同步的. 1)优点:与cp和scp相比来说,rsync更快,更安全,支持增量备份.rsync在数据同步的过程中,不像cp一样全部都拷贝,而是先去比对特征码

rsync + inotify 实现多台服务器数据同步

环境分析:目前环境4台web服务器采用共享存储技术,由于nas服务最近频繁掉线,影响网站访问,故计划采用对象存储方案.我们云环境补救措施可以用多台Linux服务器做存储,配合rsync(同步)+notify(触发)实现服务器数据同步. 方案实施: 1.方案分析:每台web服务器上分别挂载一个存储盘/newweb,将原先网站访问资源指向/otherweb的路径修改至这个/newweb,由于磁盘容量没有nas大,可以将web用到的数据源,如图片.网页等放在这个路径下,邮箱.日志等继续放在nas下,即

Server Data Synchronization Via Linux rsync、rsync+inotify Between Load Balance Server

目录 1. 远程文件同步的应用场景 2. rsync+crontab 3. rsync+inotify 1. 远程文件同步的应用场景 在负载均衡集群的应用场景中,往往在多台web server的前端有一个提供负载均衡的Load Balance Server 1. 客户端的通过访问一个统一的域名到这个Load Balance上,例如:www.test.com,Load Balance Server会根据负载调度算法将请求合理地分配到集群的子节点中 2. 客户端上传的文件同样也会被Load Bala

企业案例rsync+inotify同步web数据

应用场景: 公司后端有两台nginx服务器,因还在测试阶段.故开发经常需要更新web程序,而每次更新都需要上传两次.现在两台web服务器还好.如果以后随着业务量的增长,4.5台的时候还需要挨个上传就有点苦逼了.故我打算使用rsync+inotify组合来实现服务器的数据时时同步. rsync介绍: rsync是linux/UNIX系统下的文件同步和数据传输工具,采用rsync算法使一个客户机和远程文件服务器之间的文件同步.通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将

Linux下rsync+inotify实现实时数据同步

一. rsync 1. 什么是rsync rsync 是一个远程数据同步工具, 可以实现本主机内,或跨主机的数据同步.以服务运行时监听在TCP 873端口, rsync演算法可以达到只传送文件变化的部分,而不是整个都传送,因此速度相当的快,性能不错. 所以rsync通常可以作为备份工具来使用. 1.1 rsync基本特点: 1. 可以镜像保存整个目录树或文件系统 2. 可以很容易做到保持原来文件的权限.时间.软硬链接等; (通过rsync的一些参数, 如 -a) 3. 较高的数据传输效率 4.

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

定时备份和实时备份 说到备份,无疑于定时备份和实时同步备份.定时备份可以通过脚本或者Crontab来实现,而实时同步备份可以通过某些接口监控文件的各种变化情况来实现的(比如内核接口inotify):通过对比可以发现对数据信息要求高的环境使用实时同步备份可以更好更有利的保护数据的安全性. 软件介绍之rsync rsync说明 rsync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘中去.所以有时候要同步到磁盘中去的,而rsync说白了和复制差不多.能将一

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