Rsync+Inotify 实现数据同步

简介: 【8月更文挑战第25天】Rsync是一款适用于UNIX和类UNIX系统的高效数据备份工具,支持本地与远程数据复制。通过识别数据变更实现增量备份,减少网络传输量,提升效率。利用SSH加密保障数据安全,服务器负责定义源数据,客户端按需同步,确保双端一致性,常用端口为TCP-873。

Rsync 是UNIX及类UNIX-Like平台下一款强大的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync 可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率.你可以使用它进行本地数据或远程数据的复制,Rsync可以使用 SSH 安全隧道进行加密数据传输,Rsync 服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的.Rsync 使用 TCP-873 端口
Inotify 是一个Linux特性,它监控文件系统操作,比如读取、写入和创建 Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多,本章学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具.
Rsync 文件同步
Rsync服务端配置
1.服务端首先安装Rsync软件包,并创建一个/common目录拷贝进去一些配置文件用于测试.

[root@localhost ~]# yum install -y rsync
[root@localhost ~]# mkdir -p /common
[root@localhost ~]# cp -a /etc/* /common

2.编辑Rsync的主配置文件覆盖写入以下内容,这里指定了我们需要共享的文件与目录.

[root@localhost ~]# vim /etc/rsyncd.conf
use chroot=yes #禁锢用户主目录
address=127.0.0.1 #指定本机的IP地址
port=873 #指定默认端口
log file=/var/log/rsync.log #指定日志文件保存位置
pid file=/var/syncd.pid #指定PID文件保存位置

[pub] #声明目录名(也就是下面的共享名)
comment=hello lyshark #说明信息
path=/common #要同步的目录
read only=yes #只读
dont compress=.gz .tgz *.bz2 #指定这些文件不压缩
auth users=lyshark #使用sync的用户名密码
secrets file=/etc/rsyncd_users.db #存放虚拟用户的密码文件

3.创建密码文件,在上面的配置中我们指定了密码配置文件位置为/etc/rsyncd_users.db,编辑这个配置文件并写入以下内容.

[root@localhost ~]# vim /etc/rsyncd_users.db

lyshark:123123 #格式:用户名:密码
admin:123123

4.给服务端密码文件给予最低运行权限,并开启rsync守护进程.

[root@localhost ~]# chmod 600 /etc/rsyncd_users.db #给予权限,保证安全
[root@localhost ~]# rsync --daemon #开启服务
[root@localhost ~]# netstat -antp |grep ":873" #查看端口,是否开启成功

Rsync客户端配置
1.首先我们应该创建客户接收位置,用于接收传输文件,这里我就和服务器保持一致了.

[root@localhost ~]# mkdir -p /common

2.声明一个全局变量,Rsync验证时先搜索变量在输入密码,这里将其写入配置文件实现开机自启动.

[root@localhost ~]# export RSYNC_PASSWORD=123123 #设置验证密码
[root@localhost ~]# echo "export RSYNC_PASSWORD=123123" >> /etc/profile #写入配置文件

3.上面的步骤全部完成以后我们就可以使用一下命令进行验证同步了.

[root@localhost ~]# rsync -avz 虚拟用户名@IP地址::共享名 数据保存位置 #从服务器同步到本机
[root@localhost ~]# rsync -avz --delete 虚拟用户名@服务器IP地址::共享名 数据保存位置 #从服务器同步到本机并且完全与服务器保持数据一致

[root@localhost ~]# rsync -avz 本地文件 root@服务器IP:/保存位置 #把我的文件发送给对方
[root@localhost ~]# rsync -avz root@服务器IP:/对方文件位置 /保存位置 #把对方的文件下载给我
[root@localhost ~]# rsync -avz lyshark@192.168.1.12::pub /client/rsync
每次同步数据都需要手动输入命令是非常麻烦的一件事,作为一名运维人员,我们需要更智能化的处理机制,这可以考虑使用Shell脚本来解决这样的问题,下面的这个rsync_back.sh脚本可以实现数据的同步任务,我们可以将他加入到计划任务里实现自动同步数据之用.

!/bin/bash

export RSYNC_PASSWORD=123123
src=common
dest=/common
server=192.168.1.10
user=lyshark

[! -d $dest ] && mkdir $dest
rsync -avz --delete ${user}@${server}::$src $dest/${date +%Y%m%d}
Rsync+Inotify 双向同步
Rsync+Inotify可实现一台服务器数据更新另一台马上同步,实现基础的单向热备份这里有个,前置条件主服务器对从服务器建立SSH密钥对验证,并且下面的几个步骤主从服务器都需要做一遍.

1.下载Inotify工具,并编译安装inotify-tools

[root@localhost ~]# wget https://jaist.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
[root@localhost ~]# tar -xzvf inotify-tools-3.13.tar.gz
[root@localhost ~]# cd inotify-tools-3.13/
[root@localhost ~]# ./configure
[root@localhost ~]# make && make install

2.优化内核参数(可选)

[root@localhost ~]# vim /etc/sysctl.conf

fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

[root@localhost ~]# sysctl -p
3开启监控模块(测试)
[root@localhost ~]# inotifywait -mrq -e create,delete /tmp #tmp为被监控目录

4.监控脚本,实现如果服务端数据更新,自动使用Rsync命令同步数据到客户端

!/bin/bash

date="inotifywait -mrq -e create,delete /本地目录"
sync="rsync -avz --delete /本地目录/ 对方用户名@对方IP:/同步到对方哪个目录"

$date | while read DIRECTORY EVENIS FILE
do
$sync
done

目录
相关文章
|
算法 Linux
Linux系统【文件传输】rsync命令 – 远程数据同步工具
rsync命令来自于英文词组“remote sync”的缩写,其功能是用于远程数据同步。rsync命令能够基于网络(含局域网和互联网)快速的实现多台主机间的文件同步工作,并与scp或ftp发送完整文件不同,rsync有独立的文件内容差异算法,会在传送前对两个文件进行比较,只传送两者内容间的差异部分,因此速度更快。
206 2
|
安全 Unix Linux
【Linux网络服务】Rsync数据同步
【Linux网络服务】Rsync数据同步
|
监控 应用服务中间件 开发工具
Centos7.4 搭建rsync+inotify 实现数据同步
简介 起因 因公司全部迁云,配置ECS时需要将Web集群之间配置 数据同步 以及 会话保持,接下来配置在 linux Centos7.4版本的系统操作。 优点 使用rsync工具和inotify机制相结合,可以实现触发式部署(实时同步),只要原始(主)位置的文档发生变幻,则立即启用增量推送操作,否则处于静态等待状态,这样以来,就避免了分布式集群部署过程复杂的问题。
1858 0
|
监控 应用服务中间件 开发工具
Centos7.4 搭建rsync+inotify 实现数据同步
简介 起因 因公司全部迁云,配置ECS时需要将Web集群之间配置 数据同步 以及 会话保持,接下来配置在 linux Centos7.4版本的系统操作。 优点 使用rsync工具和inotify机制相结合,可以实现触发式部署(实时同步),只要原始(主)位置的文档发生变幻,则立即启用增量推送操作,否则处于静态等待状态,这样以来,就避免了分布式集群部署过程复杂的问题。
1260 0
|
应用服务中间件 nginx Perl
|
3月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
120 1

热门文章

最新文章