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

发布于:2025-06-11 ⋅ 阅读:(36) ⋅ 点赞:(0)
技术栈
  • 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
do
  if [ -f $line ];then
        rsync -za $line --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.password
  else
        cd $path
        rsync -za ./ --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.password
  fi
done
  • 后台启动脚本

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


网站公告

今日签到

点亮在社区的每一天
去签到