两台服务器间使用rsync和inotify-tools实现文件同步
来源:互联网 发布:ask软件 编辑:程序博客网 时间:2024/06/05 00:42
在开发过程中,PC端和微信端的后台程序位于不同服务器上,而甲方又要求通过PC端来修改微信端的文件,为了方便起见,决定使用现在PC端服务器完成文件的修改,再将此文件同步到微信端服务器。试了网上的很多rsync的配置,都无法工作。发现使用ssh连接可以在不需要配置rsync的情况下使用rsync完成文件的同步,所以本文主要介绍在ssh连接下如何使用rsync和inotify-tools实现文件同步。
rsync介绍
rsync全称remote sync,是一种更高效、可以本地或远程同步的命令,之所以高效是因为rsync会对需要同步的源和目的进度行对比,只同步有改变的部分,所以比scp命令更高效,但是rsync本身是一种非加密的传输,可以借助-e选项来设置具备加密功能的承载工具进行加密传输。
rsync有四种工作模式分为:
1、shell模式,也称作本地模式
2、远程shell模式,此时可以利用ssh协议承载其数据传输过程
3、列表模式,其工作方式与ls相似,仅列出源的内容:-nv
4、服务器模式,此时,rsync可以工作在守护进程,能够接收客户端的数据请求;在使用时,可以在客户端使用rsync命令把文件发送到守护进程,也可以像服务器请求获取文件
rsync命令选项
-n:测试,在不确定命令是否能按照意愿执行时,务必要实现测试
-v:详细输出模式,–verbose
-q:–quiet,静默模式
-c:–checksum,开启校验功能,强行对文件传输进行校验
-r:–recursive,递归复制
-a: –archives.归档,保留文件的原有属性。
本次主要使用命令:将/root/common/welcome.txt文件同步到目标服务器的/root/common/welcome.txt
rsync -a /root/common/welcome.txt 用户名@目标服务器地址:/root/common/welcome.txt
rsync一般是系统自带的。无需自己安装。
inotify-tools介绍
Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。。
inotify-tools是一个C库和一组命令行的工作提供Linux下inotify的简单接口。inotify-tools安装后会得到inotifywait和inotifywatch这两条命令。
- inotifywait命令可以用来收集有关文件访问信息,Linux发行版一般没有包括这个命令,需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核中启用了inotify。
- inotifywatch命令用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。
本文只是用了inotifywait命令。
安装inotify-tools
sudo apt-get install inotify-tools
inotifywait命令参数
可监听的事件
具体操作
ssh连接
- 生成密钥对(每台服务器上都要执行)
ssh-keygen -t rsa
此条命令执行完之后,会在/home/.ssh/文件夹下生成两个文件 id_rsa和id_rsa.pub,为了避免重名带来的文件覆盖问题,将id_rsa.pub文件重命名为在network中定义的主机名(也可以任意).
在一台服务器上使用scp命令将另一台服务器的公钥拷贝到/home/.ssh文件下
scp /home/.ssh/ 目标服务器IP:/home/.ssh/master
- 将2个公钥文件放入authorized_keys文件中
cat 公钥文件1>> authorized_keys;cat 公钥文件2 >> authorized_keys;
- 将authorized_keys文件拷贝到另一台服务器,命令参考前面
使用rsync和inotify-tools实现文件同步
具体代码如下(backup.sh):
#!/bin/bash/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%e %f' -e modify /root/common/ | while read filedo if [[ $file = 'MODIFY welcome.txt' ]];then rsync -a /root/common/welcome.txt root@目标服务器IP:/root/common/welcome.txt fidone;
后台运行backup.sh
bash ./backup.sh &
- 两台服务器间使用rsync和inotify-tools实现文件同步
- Centos 6.5 rsync+inotify 两台服务器文件实时同步
- rsync两台服务器文件同步
- 使用rsync+inotify-tools+ssh实现文件实时同步
- 使用rsync+inotify-tools+ssh实现文件实时同步
- 使用rsync+inotify-tools+ssh实现文件实时同步
- rsync + sersync + inotify-tools实现数据同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify 实现服务器之间目录文件实时同步
- centos6.5 rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- return与finally的执行顺序与返回值问题
- C语言下调试信息打印与错误位置定位功能的实现
- Java 泛型演示
- Android Gradle 常用使用场景实现方式的总结
- 两台服务器间使用rsync和inotify-tools实现文件同步
- 洛谷 P1445 没占到1444的愤怒
- 洛谷 P3404 斐波那契(线段树)
- 如何写SysV服务管理脚本
- git 常用语句总结
- Java 泛型类
- 1029 序列排序找中位数
- 去掉空格
- 作业4、5