- 浏览: 3424861 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://liuxin1982.blog.chinaunix.net/uid-11655527-id-3483641.html
文件的同步镜像在很多地方都需要用到,因此rsync这款免费软件得到了广泛的应用,包括在Windows平台上,都已经有了支持rsync的“cwRsyncServer”。
但是,我们一般都是通过结合crontab计划任务来实现文件同步的,这样做的缺点是效率低,不能做到实时同步。
现在,在Linux平台下我们可以利用2.6内核的inotify监控文件系统机制,通过inotify-tools来实现实时同步了。
具体操作如下:
1.安装所需软件
目前各大Linux发行版本都已经具有了rsync与inotify-tools的软件包,推荐通过RPM,yum,apt-get等方式进行安装。
RHEL:
[root@server1 ~]# rpm -ivh rsync-*
[root@server1 ~]# rpm -ivh inotify-tools-*
CentOS:
[root@server1 ~]# yum install rsync inotify-tools
Ubuntu:
[root@server1 ~]# apt-get install rsync inotify-tools
采用源码方式安装的步骤如下:
[root@server1 ~]# wget ftp://ftp.samba.org/pub/rsync/rsync-3.0.8.tar.gz
[root@server1 ~]# tar xzvf rsync-3.0.8.tar.gz
[root@server1 ~]# cd rsync-3.0.8
[root@server1 ~]# ./configure
[root@server1 ~]# make
[root@server1 ~]# make install
[root@server1 ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@server1 ~]# tar xzvf inotify-tools-3.14.tar.gz
[root@server1 ~]# cd inotify-tools-3.14
[root@server1 ~]# ./configure
[root@server1 ~]# make
[root@server1 ~]# make install
2.配置ssh key信任
建议通过普通用户进行操作,理由是通过root操作本身就危险,免密码登陆的root就更危险了。
在两台服务器上创建rsync用户
[root@server1 ~]# useradd -m rsync
[root@server1 ~]# passwd rsync
[root@server2 ~]# useradd -m rsync
[root@server2 ~]# passwd rsync
[root@server1 ~]# su - rsync
[rsync@server1 ~]$ ssh-keygen -t rsa
在提示保存私钥(key)和公钥(public key)的位置时,使用默认值;
在提示是否需要私钥密码(passphrase)时,直接敲回车,即不使用私钥密码。
之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/home/rsync/.ssh/目录下。
将公钥添加到远程主机的 authorized_keys 文件中
将文件上传到远程主机(假设远程主机IP为192.168.10.4)
[rsync@server1 ~]$ scp ~/.ssh/id_rsa.pub rsync@192.168.10.4:/home/rsync/
使用rsync用户SSH到登陆到远程主机,并将公钥添加到 authorized_keys 文件中
[rsync@server2 ~]$ mkdir .ssh
[rsync@server2 ~]$ chmod 700 .ssh
[rsync@server2 ~]$ mv ~/id_rsa.pub ~/.ssh/authorized_keys
重启SSH服务
[root@server1 ~]# /etc/init.d/sshd restart
[root@server2 ~]# /etc/init.d/sshd restart
3.创建inotify_rsync.sh脚本
[root@server1 ~]# vim inotify_rsync.sh
#!/bin/sh
SRC=/home/rsync/test
DST=rsync@192.168.10.4:/home/rsync/test
/bin/su - rsync
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
do
/usr/bin/rsync -ahqzt --delete $SRC $DST
done
相关注解如下:
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
/usr/bin/rsync -ahqzt --delete $SRC $DST
-a 存档模式
-h 保存硬连接
-q 制止非错误信息
-z 压缩文件数据在传输
-t 维护修改时间
-delete 删除于多余文件
要排除同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径,具体查看man rsync。
要排除某个目录的事件监听的处理时,为inotifywait添加--exclude或--excludei参数,具体查看man inotifywait。
inotifywait 命令产生三个返回值,分别是“日期,时间,文件” 这3个返回值会做为参数传给read,因此脚本中的“while read D E F” 写法细化了返回值。
赋予脚本可执行权限
[root@server1 ~]# chmod +x inotify_rsync.sh
执行脚本
[root@server1 ~]# /root/inotify_rsync.sh &
设置脚本开机自启动
[root@server1 ~]# cat "/root/inotify_rsync.sh &" >> /etc/rc.local
4.测试
首先在server1服务器的/home/rsync/test目录下创建文件或目录,然后再到server2的/home/rsync/test目录下查看,如果看到就说明成功了。
[rsync@server1 ~]$ cd test
[rsync@server1 test]$ touch a.txt
注意:第一次SSH连接的时候可能需要输入一次密码,之后就不需要输入了。
[rsync@server2 ~]$ cd test
[rsync@server2 test]$ ls
a.txt
看到了a.txt文件,说明文件同步已经成功!
文件的同步镜像在很多地方都需要用到,因此rsync这款免费软件得到了广泛的应用,包括在Windows平台上,都已经有了支持rsync的“cwRsyncServer”。
但是,我们一般都是通过结合crontab计划任务来实现文件同步的,这样做的缺点是效率低,不能做到实时同步。
现在,在Linux平台下我们可以利用2.6内核的inotify监控文件系统机制,通过inotify-tools来实现实时同步了。
具体操作如下:
1.安装所需软件
目前各大Linux发行版本都已经具有了rsync与inotify-tools的软件包,推荐通过RPM,yum,apt-get等方式进行安装。
RHEL:
[root@server1 ~]# rpm -ivh rsync-*
[root@server1 ~]# rpm -ivh inotify-tools-*
CentOS:
[root@server1 ~]# yum install rsync inotify-tools
Ubuntu:
[root@server1 ~]# apt-get install rsync inotify-tools
采用源码方式安装的步骤如下:
[root@server1 ~]# wget ftp://ftp.samba.org/pub/rsync/rsync-3.0.8.tar.gz
[root@server1 ~]# tar xzvf rsync-3.0.8.tar.gz
[root@server1 ~]# cd rsync-3.0.8
[root@server1 ~]# ./configure
[root@server1 ~]# make
[root@server1 ~]# make install
[root@server1 ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@server1 ~]# tar xzvf inotify-tools-3.14.tar.gz
[root@server1 ~]# cd inotify-tools-3.14
[root@server1 ~]# ./configure
[root@server1 ~]# make
[root@server1 ~]# make install
2.配置ssh key信任
建议通过普通用户进行操作,理由是通过root操作本身就危险,免密码登陆的root就更危险了。
在两台服务器上创建rsync用户
[root@server1 ~]# useradd -m rsync
[root@server1 ~]# passwd rsync
[root@server2 ~]# useradd -m rsync
[root@server2 ~]# passwd rsync
[root@server1 ~]# su - rsync
[rsync@server1 ~]$ ssh-keygen -t rsa
在提示保存私钥(key)和公钥(public key)的位置时,使用默认值;
在提示是否需要私钥密码(passphrase)时,直接敲回车,即不使用私钥密码。
之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/home/rsync/.ssh/目录下。
将公钥添加到远程主机的 authorized_keys 文件中
将文件上传到远程主机(假设远程主机IP为192.168.10.4)
[rsync@server1 ~]$ scp ~/.ssh/id_rsa.pub rsync@192.168.10.4:/home/rsync/
使用rsync用户SSH到登陆到远程主机,并将公钥添加到 authorized_keys 文件中
[rsync@server2 ~]$ mkdir .ssh
[rsync@server2 ~]$ chmod 700 .ssh
[rsync@server2 ~]$ mv ~/id_rsa.pub ~/.ssh/authorized_keys
重启SSH服务
[root@server1 ~]# /etc/init.d/sshd restart
[root@server2 ~]# /etc/init.d/sshd restart
3.创建inotify_rsync.sh脚本
[root@server1 ~]# vim inotify_rsync.sh
#!/bin/sh
SRC=/home/rsync/test
DST=rsync@192.168.10.4:/home/rsync/test
/bin/su - rsync
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
do
/usr/bin/rsync -ahqzt --delete $SRC $DST
done
相关注解如下:
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
/usr/bin/rsync -ahqzt --delete $SRC $DST
-a 存档模式
-h 保存硬连接
-q 制止非错误信息
-z 压缩文件数据在传输
-t 维护修改时间
-delete 删除于多余文件
要排除同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径,具体查看man rsync。
要排除某个目录的事件监听的处理时,为inotifywait添加--exclude或--excludei参数,具体查看man inotifywait。
inotifywait 命令产生三个返回值,分别是“日期,时间,文件” 这3个返回值会做为参数传给read,因此脚本中的“while read D E F” 写法细化了返回值。
赋予脚本可执行权限
[root@server1 ~]# chmod +x inotify_rsync.sh
执行脚本
[root@server1 ~]# /root/inotify_rsync.sh &
设置脚本开机自启动
[root@server1 ~]# cat "/root/inotify_rsync.sh &" >> /etc/rc.local
4.测试
首先在server1服务器的/home/rsync/test目录下创建文件或目录,然后再到server2的/home/rsync/test目录下查看,如果看到就说明成功了。
[rsync@server1 ~]$ cd test
[rsync@server1 test]$ touch a.txt
注意:第一次SSH连接的时候可能需要输入一次密码,之后就不需要输入了。
[rsync@server2 ~]$ cd test
[rsync@server2 test]$ ls
a.txt
看到了a.txt文件,说明文件同步已经成功!
发表评论
-
应用行为活动监测器 Sysdig Falco
2016-05-19 13:03 1289http://www.oschina.net/p/sysdig ... -
Fedora安装Redis
2016-05-04 08:56 1414管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
服务器自动化操作 RunDeck
2016-05-03 14:04 1719http://www.oschina.net/p/rundec ... -
安装Hadoop, Hbase, Phoenix
2016-04-22 09:22 1484http://my.oschina.net/jrrx/blog ... -
shell中读写mysql数据库
2016-03-13 15:32 1398http://mingxinglai.com/cn/2013/ ... -
container和主机(host)之间的文件拷贝
2016-02-04 21:33 1364http://www.cnblogs.com/lemonbar ... -
在linux操作系统下注销、关机、重启的简单命令
2016-01-31 15:28 1239一、注销的命令——Logout 是登陆的相对操作,登陆系统后, ... -
Linux如何查找大文件或目录总结
2016-01-28 22:44 1288http://my.oschina.net/u/1034537 ... -
Linux 查看磁盘空间命令
2016-01-14 22:08 1236df、du、fdisk:Linux磁盘 ... -
Linux下的压缩和解压
2015-11-10 16:13 1099Linux下的压缩(zip)解压(unzip)缩命令 http ... -
Linux下安装FFmpeg
2015-10-29 14:00 1582在线安装: 在 Ubuntu/Debian/Fedora 系统 ... -
Linux的tmpfs文件系统
2015-10-27 22:39 1058详细看原文:http://futureinhands.itey ... -
linux shell 中"2>&1"含义
2015-10-26 15:09 1269export date_str=$(date "+% ... -
centos 6.5 普通用户 开启自动运行
2015-10-15 19:30 4CentOS tomcat普通用户执行配置安装 http:// ... -
linux 统计文件夹大小
2015-10-13 22:25 1299linux 统计文件夹大小 http://www.51tes ... -
Linux命令之远程登录/无密码登录-ssh,ssh-keygen,ssh-copy-id
2015-10-11 11:13 1103http://blog.csdn.net/wangjunjun ... -
Docker容器使用静态独立的外部IP(便于集群组建)
2015-10-07 16:14 4111http://my.oschina.net/gudaoxuri ... -
Centos 6.5设定IP
2015-09-30 08:50 1283参考: http://blog.csdn.net/sky663 ... -
docker下面tomcat执行startup.sh问题
2015-09-14 13:55 8188在做docker的时候,碰到了如果使用startup.sh是无 ...
相关推荐
可以实现触发式的文件同步,但使用crontab守护进程方式进行触发同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。...
### rsync + inotify-tools + SSH 实现触发式远程实时同步 #### 一、概述 在数据同步领域,实现高效且自动化的文件同步是至关重要的。对于需要在两台或多台服务器之间保持文件同步的场景,传统的定时同步方法可能...
"Rsync+sersync+inotify-tools"这个组合提供了一套高效且可靠的实时文件同步解决方案。接下来,我们将深入探讨这三个工具各自的功能以及它们如何协同工作。 **Rsync** Rsync(Remote Sync)是一款强大的、快速的...
Ubuntu结合Rsync和Inotify-tools和脚本实现数据的实时同步
标题中的“rsync+inotify-tool”涉及到的是两种在Linux系统中广泛使用的工具,它们各自在文件同步和监控方面有着重要的作用。rsync是高效的数据同步工具,而inotify-tools则是一组用于利用Linux内核的inotify机制来...
结合`inotify-tools` 和 `rsync`,我们可以在文件系统发生改变时立即触发`rsync`进行同步,实现近乎实时的数据同步。以下是在CentOS系统上配置和使用这两者的步骤: 1. **安装**: - 安装`inotify-tools`:在...
CentOS下用rsync+inotify实现实时同步 CentOS 7下用rsync+inotify实现实时同步可以实现文件之间的同步备份。下面是相关知识点的详细解释: 1. rsync简介 rsync是一种快速、可靠、安全的文件同步工具。它可以在...
将rsync和inotify-tools结合使用,可以实现文件的实时同步。具体操作流程如下: 1. 使用inotifywait监控指定目录,每当该目录下的文件发生改变时,触发一个脚本。 2. 脚本接收到事件后,调用rsync命令,将变化的...
inotify-tools与`rsync`、`nfs`等工具结合,可以实现高效的数据同步、备份和监控。例如,当监控目录有新文件生成时,可以立即触发`rsync`进行备份: ```bash inotifywait -m /source/directory -e close_write | ...
总的来说,rsync+inotify实时同步方案是一个强大且灵活的数据同步解决方案,尤其适合对实时性要求高的场景。通过熟练掌握这两个工具的使用,我们可以构建出高效、可靠的文件系统同步策略,提高工作效率并减少数据...
1. **实时备份**:结合`rsync`或`unison`,`inotify-tools`可以实现文件或目录的实时备份,确保数据安全。 2. **自动化构建**:在源代码更改后立即触发编译或构建过程,提高开发效率。 3. **日志监控**:监控日志...
《使用inotify-tools实现多服务器文件实时同步详解》 在IT运维领域,高效的数据同步是保障服务稳定性和数据一致性的关键。inotify-tools是一个强大的Linux工具集,它提供了对文件系统事件的监控,如文件创建、修改...
通过结合Inotify和Rsync,我们可以实现近乎实时的文件同步,尤其适用于服务器间的数据备份或开发环境的实时更新。 具体实现步骤如下: 1. 安装`inotify-tools`:首先,我们需要在Linux系统上安装`inotify-tools`。...
使用 Rsync + inotify 实现实时远程同步 Rsync 是一个功能强大且广泛使用的文件同步工具,它可以快速、安全、可靠地同步文件。在服务器之间同步文件时,Rsync 是一个不二之选。Inotify 是一个 Linux 内核提供的文件...
### rsync+inotify 实现服务器之间目录文件实时同步 #### 软件简介与应用场景 **rsync** 是一种高效且广泛使用的文件同步工具,主要用于远程数据备份、镜像和迁移场景。相较于传统的 `cp` 和 `tar` 备份方式,...