当前位置: 首页 > news >正文

Rsync+inotify+nfs实现数据实时备份方案

技术栈
  • NFS是 Network File System的简写,即网络文件系统。NFS的优点是内核直接支持,部署简单、运行稳定,协议简单、传输效率高。缺点是仅依靠IP地址或主机名来决定用户能否挂载共享目录,容易出现单点故障。

  • rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

  • Inotify是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。通过inotify实现数据的时时同步,所需要的应用软件inotify-tool。

机器准备
  • 10.7.11.9 (nfs节点)

  • 10.7.11.5 (备份节点)

  • 注意:关闭机器的防火墙 - systemctl stop firewalld

一、部署 nfs 服务器
  • 安装nfs-server

#nfs-utils:提供了NFS服务器程序和对应的管理工具 
#rpcbind:获取nfs服务器端的端口等信息
yum install -y nfs-utils rpcbind
# k8s node 节点需要安装nfs客户端
systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server
  • 修改配置

#创建目录
mkdir -p /home/nfs-root/
​
#/home/nfs-root/表示要共享文件的目录 
# *表示所有客户端可访问,也可以写成指定IP网段或者具体的ip
#rw:表示读写权限,sync:表示数据同步写入内存硬盘,no_root_squash 会使得根用户在 NFS 客户端上拥有和服务器上相同的权限
/home/nfs-root/ *(insecure,rw,sync,no_root_squash)
  • 保存,使生效

#wq
exportfs -a
exportfs

二、部署 Rsync 服务端(10.7.11.5 )
  • 下载 Rsync 软件包

yum -y install rsync
  • 新增 vi /etc/rsyncd.conf 配置文件

​
#用户id
uid = root
#组id
gid = root
#程序安全设置
use chroot = no
#客户端连接数
max connections = 200
#进程号文件位置
pid file = /var/run/rsyncd.pid
#进程锁文件位置
lock file = /var/run/rsync.lock
#日志文件位置
log file = /var/run/rsyncd.log
#连接超时时间
timeout = 300
#3.1版本以上要加这个
fake super = yes
​
#模块名称
[backup]
#同步数据的目录
path = /backup
#有错误时忽略
ignore errors
#只读模式(true为只读,false为可读可写)
read only = false
#阻止远程列表
list = false
#允许访问的IP
hosts allow = 10.7.11.0/24
#禁止访问的IP
hosts deny = 0.0.0.0/32
#虚拟用户
auth users = rsync_backup
#存放用户和密码的文件
secrets file = /etc/rsync.password
  • 创建密码文件 vi /etc/rsync.password

rsync_backup:123456
  • 修改 /etc/rsync.password 权限

chmod 600 /etc/rsync.password
  • 创建程序用户 rsync

useradd -M -s /sbin/nologin rsync
  • 创建 / backup 目录

mkdir /backup
  • 守护进程启动 rsync

rsync --daemon
三、部署Rsync 客户端(10.7.11.9)
  • 客户端节点新增密码文件 vi /etc/rsync.password

123456
  • 修改 / etc/rsync.password 权限

chmod 600 /etc/rsync.password
  • 测试 ,将inotify.sh文件传输至服务端

rsync -zav inotify.sh rsync_backup@10.7.11.5::backup --password-file=/etc/rsync.password

  • 去服务节点查看

三、部署 inotify 服务
  • 下载阿里云网络源

# 首先备份系统自带『yum 源配置文件』,具体路径为:/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# CentOS 7 
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  • 更新 yum 源

yum clean all
yum makecache
  • 下载 inotify-tools 工具包

yum -y install inotify-tools
  • 编写 inotify.sh 脚本

backupServer=10.7.11.5
path=/home/nfs-root
inotifywait -mrq --format '%w%f' -e create,close_write,delete $path | while read line
doif [ -f $line ];thenrsync -za $line --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.passwordelsecd $pathrsync -za ./ --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.passwordfi
done
  • 后台启动脚本

sh inotify.sh &
  • 测试数据同步

http://www.xdnf.cn/news/948241.html

相关文章:

  • Socket 编程
  • 架构设计之存储高性能——非关系型数据库(NoSQL)
  • 代购商城系统怎么选?从业务痛点看系统核心价值
  • SOC-ESP32S3部分:QA-关于唤醒词更改及配置操作步骤
  • 解锁Vscode:C/C++环境配置超详细指南
  • Python训练营---DAY49
  • 卷积神经网络设计指南:从理论到实践的经验总结
  • FDMA:解锁PL DDR性能的“高速快递系统”
  • Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
  • 论文笔记:Urban Computing in the Era of Large Language Models
  • 多模态大语言模型arxiv论文略读(113)
  • Vue3+ts项目,在ts文件中导入vue文件,报错:找不到模块“./App.vue“或响应的类型声明
  • Easy Rules规则引擎:轻量级Java规则处理实践指南
  • 微机原理与接口技术,期末冲刺复习资料(四)
  • Python_day49cbam模块介绍
  • 华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手
  • 从线上名片到商业引擎:企业如何用官网重构市场竞争力?
  • 从数据报表到决策大脑:AI重构电商决策链条
  • 客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
  • 篇章十 数据结构——排序
  • 用HTML5+CSS3+JavaScript实现找不同游戏
  • c语言tips-结构体数组 VS 链表宏:`list_for_each_entry` 的优势与局限对比分析
  • 《解锁JNA与CUDA内核密码,定制专属AI算子》
  • SDC命令详解:使用set_wire_load_model命令进行约束
  • 二分查找算法
  • WEB3全栈开发——面试专业技能点P6后端框架 / 微服务设计
  • 可下载旧版app屏蔽更新的app市场
  • 判断是否是润年
  • 【投稿优惠】2025年航天技术 、雷达信号与无人机应用国际会议 (ATRA 2025)
  • Fail2ban开源入侵检测,保护SSH,NGINX等