两台服务器间使用rsync和inotify-tools实现文件同步
2017-09-16 12:07
489 查看
在开发过程中,PC端和微信端的后台程序位于不同服务器上,而甲方又要求通过PC端来修改微信端的文件,为了方便起见,决定使用现在PC端服务器完成文件的修改,再将此文件同步到微信端服务器。试了网上的很多rsync的配置,都无法工作。发现使用ssh连接可以在不需要配置rsync的情况下使用rsync完成文件的同步,所以本文主要介绍在ssh连接下如何使用rsync和inotify-tools实现文件同步。
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一般是系统自带的。无需自己安装。
inotify-tools是一个C库和一组命令行的工作提供Linux下inotify的简单接口。inotify-tools安装后会得到inotifywait和inotifywatch这两条命令。
inotifywait命令可以用来收集有关文件访问信息,Linux发行版一般没有包括这个命令,需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核中启用了inotify。
inotifywatch命令用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。
本文只是用了inotifywait命令。
安装inotify-tools
此条命令执行完之后,会在/home/.ssh/文件夹下生成两个文件 id_rsa和id_rsa.pub,为了避免重名带来的文件覆盖问题,将id_rsa.pub文件重命名为在network中定义的主机名(也可以任意).
在一台服务器上使用scp命令将另一台服务器的公钥拷贝到/home/.ssh文件下
将2个公钥文件放入authorized_keys文件中
将authorized_keys文件拷贝到另一台服务器,命令参考前面
后台运行backup.sh
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命令参数
参数 | 描述 |
---|---|
-m | 是要持续监视变化。 |
-r | 使用递归形式监视目录。 |
-q | 减少冗余信息,只打印出需要的信息。 |
-e | 指定要监视的事件列表。 |
–timefmt | 是指定时间的输出格式。 |
–format | 指定文件变化的详细信息。 |
可监听的事件
事件 | 描述 |
---|---|
access | 访问,读取文件。 |
modify | 修改,文件内容被修改。 |
attrib | 属性,文件元数据被修改。 |
move | 移动,对文件进行移动操作。 |
create | 创建,生成新文件 |
open | 打开,对文件进行打开操作。 |
close | 关闭,对文件进行关闭操作。 |
delete | 删除,文件被删除。 |
具体操作
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 file do if [[ $file = 'MODIFY welcome.txt' ]];then rsync -a /root/common/welcome.txt root@目标服务器IP:/root/common/welcome.txt fi done;
后台运行backup.sh
bash ./backup.sh &
相关文章推荐
- Linux服务器文件实时同步方案设计和实现(rsync+inotify-tools)
- 使用rsync+inotify-tools+ssh实现文件实时同步
- 使用rsync+inotify-tools+ssh实现文件实时同步
- linux使用rsync+inotify-tools+ssh实现文件实时同步
- Linux中使用rsync实现多服务器之间文件同步问题
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify 实现资源服务器的同步目录下的文件变化时,备份服务器的同步目录更新,以资源服务器为准,去同步其他客户端
- centos6.5 rsync+inotify实现服务器之间文件实时同步
- rsync+sersync+inotify实现服务器间文件同步之一
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify 实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify 实现资源服务器的同步目录下的文件变化时,备份服务器的同步目录更新,以资源服务器为准,去同步其他客户端
- centos6.5 rsync+inotify实现服务器之间文件实时同步
- rsync+inotify 实现服务器之间目录文件实时同步
- rsync+inotify实现服务器间文件的实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- rsync+inotify实现服务器之间文件实时同步
- linux系统中rsync+inotify实现服务器之间文件实时同步