unison+inotify-tools触发式双向自动同步
双向实时数据同步部署
首先添加服务器ssh信任,即免秘钥登陆
Web1:192.168.10.36
Web2:192.168.10.37
分别在web1和web2上执行以下命令
mkdir ~/.ssh
chmod 700 ~/.ssh
生成RSA密钥
ssh-keygen -t rsa
(然后连续三次回车)
添加密钥到授权密钥文件中
cd
~/.ssh
ssh "-p 22" 192.168.10.36 cat /root/.ssh/id_rsa.pub >>
authorized_keys #小写p
ssh "-p 22" 192.168.10.37 cat /root/.ssh/id_rsa.pub >>
authorized_keys
scp -P 22 authorized_keys 192.168.10.37:/root/.ssh/ #大写P
chmod
600 /root/.ssh/authorized_keys
在服务器server2上操作
chmod 600 /root/.ssh/authorized_keys
需要提供软件列表:(版本必须一致)
inotify-tools-3.14.tar.gz
ocaml-3.12.1.tar.gz
unison-2.40.63.tar.gz
下载地址:
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
wget http://caml.inria.fr/pub/distrib/ocaml-3.12/ocaml-3.12.1.tar.gz
wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.63.tar.gz(不可用)
两台服务器都要执行以下命令:
yum install ctags-etags
tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
Make
make install
tar -zxvf ocaml-3.12.1.tar.gz
cd ocaml-3.12.1
./configure
make world opt
make install
tar -xzvf unison-2.40.63.tar.gz
cd unison-2.40.63
make UISTYLE=text
make install
执行make install时提示以下错误:
mv /root/bin//unison /tmp/unison-24397
mv: 无法获取"/root/bin//unison"
的文件状态(stat): 没有那个文件或目录
make: [doinstall] 错误 1 (忽略)
cp unison /root/bin/
cp: 无法创建普通文件"/root/bin/":
是一个目录
make: *** [doinstall] 错误 1
因为unison默认是将unison文件拷贝到/root/bin目录,但Linux默认没有该目录,所以我们需要将生成的可执行文件unison复制到系统PATH目录。
所以需要我们手动执行以下命令:
cp unison /usr/local/bin
测试同步情况:
unison -batch /home/web1/ ssh://192.168.10.37//home/wen2/
在web1设备上新建脚本,并且后台运行:
Vi unison.sh
------------------------------------以下是脚本内容-------------------------------------------
#/bin/bash
ip2="192.168.10.36"
src2="/home/web1/"
dst2="/home/web2/"
/usr/local/bin/inotifywait -mrq -e
create,delete,modify,move $src2 | while read line; do
/usr/local/bin/unison -batch $src2
ssh://$ip2/$dst2
echo -n "$line " >>
/var/log/inotify.log
echo `date | cut -d " " -f1-4`
>> /var/log/inotify.log
done
------------------------------------以上是脚本内容-------------------------------------------
在web2设备新建脚本,并且后台运行
Vi unison.sh
------------------------------------以下是脚本内容-------------------------------------------
#/bin/bash
ip2="192.168.10.37"
src2="/home/web2/"
dst2="/home/web1/"
/usr/local/bin/inotifywait -mrq -e
create,delete,modify,move $src2 | while read line; do
/usr/local/bin/unison -batch $src2
ssh://$ip2/$dst2
echo -n "$line " >>
/var/log/inotify.log
echo `date | cut -d " " -f1-4`
>> /var/log/inotify.log
done
------------------------------------以上是脚本内容-------------------------------------------
分别在两台设备上运行脚本,测试是否能够同步。
unison+inotify-tools触发式双向自动同步的更多相关文章
- Linux(centos5.0+)unison+inotify-tools触发式双向自动同步
192.168.1.11是server1, 192.168.1.22是server2. [1]安装inotify-tools 各大linux发行版本都有inotify-tools软件包,建议通过y ...
- unison + inotify 实现文件实时双向同步部署步骤
unison + inotify 实现文件实时双向同步部署步骤 一. Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或 ...
- unison+inotify实现文件双向自动同步
nfs适合存小图片和小文件,有一个致命的缺点,就是其中一台web服务挂掉之后,会直接导致web页面无法访问,动态的那种数据, 而且数据量很大的数据不适合nfs Unison是一款跨平台(window, ...
- [转]通过rsync+inotify-tools+ssh实现触发式远程实时同步
文件的同步镜像在很多地方都需要用到,因此rsync这款免费软件得到了广泛的应用,包括在Windows平台上,都已经有了支持rsync的“cwRsyncServer”. 但是,我们一般都是通过结合cro ...
- Rsync+Inotify实现文件自动同步
1>rsync概述 rsync的优点与不足 rsync与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求 ...
- unison+inotify的Web目录同步方案
1.在Linux下做WEB目录文件同步 一般有如下几种方式: ----------------------------------------------- 1) nfs实现web数据共享 ...
- unison+inotify 同步web代码并排除指定目录不同步
unison + inotify 实现web 数据双向同步 unison 是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支持通过SSH,RSH和Socket 等网络协议进行同步.unis ...
- rsync+inotify实现服务器之间文件实时同步--转
之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...
- linux系统中rsync+inotify实现服务器之间文件实时同步
最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式 ...
随机推荐
- linux 下安装mongodb
1.初始化docker: -v 设置docker和host共享目录,格式hostPath:dockerContainerPath -p 端口映射 --name,容器名称 cen ...
- javascript中的变量
变量 var x = 0; 这是声明了一个变量的实例,我们可以把变量看做存储数据的容器.数据的类型可以是任何数据类型. 一变量的命名 声明一个变量需注意: ①:变量可以以字母或者$._开头(后两 ...
- ping 或者ssh 发生connect: No buffer space available 错误
如果遇到这种情况,一般说明你的本地服务器的arp表缓存太大,而服务器内核设定的回收条数太小,一直被回收造成的. 可以用一下命令扩大arp表可以缓存的记录条数: echo 512 > /proc/ ...
- 开发维护大型 Java 项目的建议
假设你是正在开发和维护一个包含2000个类并使用了很多框架的Java开发者.你要如何理解这些代码?在一个典型的Java企业项目小组中,大部 分能够帮你的高级工程师看起来都很忙.文档也很少.你需要尽快交 ...
- JSP复习整理(五)JavaBean生命周期
一.创建一个JavaBean UserBean.java package jsp.test; public class UserBean { private String userName; priv ...
- LeetCode 359 Logger Rate Limiter
Problem: Design a logger system that receive stream of messages along with its timestamps, each mess ...
- SVN本地代码未提交而被覆盖
本地代码未提交而不小心被覆盖了,肿么办... 到回收站找到你的文件 xxx.mine,代码就可以找回来了.如果回收站没有了,那就没办法了. ---- 失而复得的感觉真好!
- A Game(洛谷 2734)
题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的得分中 ...
- DOM对象—选中执行效果
---恢复内容开始--- 例如我们注册时,一些法律条例,我们是否同意决定着能否注册.在选择同意或不同意时出现的效果. 先在body里做一个按钮和选项框. <input type="ch ...
- MySqlNDB使用自带的ndb_setup.py安装集群
在用Mysql做集群时,使用Mysql的NDB版本更易于集群的扩展,稳定和数据的实时性. 我们可以使用Mysql自带的工具进行集群安装与管理:ndb_setup.py.位于Mysql的安装目录bin下 ...