【Linux网络服务】Rsync+inotify+nfs实现数据实时备份

简介: 【Linux网络服务】Rsync+inotify+nfs实现数据实时备份

需求:客户端上传文件同步到nfs文件共享服务器,nfs文件服务器数据备份到rsync服务器

  • 机器准备
  • 192.168.159.21
  • 192.168.159.22
  • 192.168.159.23


e6d0e896326a4090b6d998c348496ac5.jpg

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

1.(192.168.159.22)部署nfs服务器

(1)在A服务端机器安装nfs-utils和rpcbind包

yum install -y nfs-utils rpcbind 
nfs-utils:提供了NFS服务器程序和对应的管理工具 
rpcbind:获取nfs服务器端的端口等信息

(2)启动rpcbind检查是否启动了rpcbind服务并监听111端口

systemctl start rpcbind 
netstat -tunlp | grep 111

3d2ec2340cf24d47bb796e9f36e9f270.jpg

(3)配置NFS服务的配置文件,参数配置:vi /etc/exports

/data/NFSdata 192.168.10.0/24(rw,sync) 
/data/NFSdata   #表示要共享文件的目录 
192.168.10.0/24 #表示所有允许访问的客户端IP网段,也可以写成指定的ip,只允许当前客户机访问 
(rw,sync)     #rw:表示读写权限,sync:表示数据同步写入内存硬盘

(4)创建/data/NFSdata目录,更改属主、属组

mkdir -p /data/NFSdata
chown -R nfsnobody:nfsnobody /data  #注意:此处不改权限,客户端没有创建文件权限

(5)启动nfs服务

systemctl start nfs

(6)设置开机启动

systemctl enable rpcbind.service 
systemctl enable nfs.service

2.(192.168.159.21)部署nfs客户端

(1)下载工具包nfs-utils

yum -y install nfs-utils

(2)设置开机自启

systemctl enable rpcbind.service #客户端不用启动nfs-server,但是要用到nfs-server的 一个命令showmount

(3)挂载

mount -t nfs 192.168.159.22:/data/NFSdata /NFS #挂在文件系统 
showmount -e 192.168.159.22 #查看是否挂载上


03d1897f9a674311bfa9625f8ec83b72.jpg

(4)测试21节点创建文件同步到22节点

7ebde634c6a04306819d3d2331a5bcec.jpg

3.(192.168.159.23)部署Rsync服务端

(1)下载Rsync软件包

yum -y install rsync

(2)新增vi /etc/rsyncd.conf配置文件

#用户id
uid = rsync
#组id
gid = rsync
#程序安全设置
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 = 192.168.159.0/24
#禁止访问的IP
hosts deny = 0.0.0.0/32
#虚拟用户
auth users = rsync_backup
#存放用户和密码的文件
secrets file = /etc/rsync.password

(3)创建密码文件vi /etc/rsync.password

rsync_backup:123456

(4)给/etc/rsync.password降权

chmod 600 /etc/rsync.password

(5)创建程序用户rsync

useradd -M -s /sbin/nologin rsync

(6)创建/backup目录

mkdir /backup

(7)守护进程启动rsync

rsync --daemon

4.(192.168.159.22)作为Rsync客户端

(1)22客户端节点新增密码文件vi /etc/rsync.password

123456

(2)给/etc/rsync.password降权

chmod 600 /etc/rsync.password

(3)测试22节点传输文件到23节点

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

3e0d9a2ea56849b081f07c35bb8f25c4.jpg

5.(192.168.159.22)部署inotify服务

(1)下载阿里云网络源

cd /etc/yum.repos.d
wget http://files.tttidc.com/centos6/epel-6.repo

(2)更新yum源

yum clean all
yum makecache

(3)下载inotify-tools工具包

yum -y install inotify-tools

(4)编写inotify.sh脚本

backupServer=192.168.159.23
path=/data/NFSdata
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

(5)后台启动脚本

sh inotify.sh &

(6)测试数据同步

0b2be6bdf845420094c53de6e6d5d05b.jpg

$path rsync -za ./ --delete rsync_backup@$backupServer::backup --password-file=/etc/rsync.password fi done


相关文章
|
2月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
244 0
|
3月前
|
机器学习/深度学习 数据采集 传感器
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
105 0
|
4月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
108 0
|
10天前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
|
2月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
68 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
3月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
166 18
|
3月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
167 5
|
2月前
|
机器学习/深度学习 数据采集 运维
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
|
4月前
|
Web App开发 网络协议 Linux
【Linux】网络基础
TCP/IP五层模型是网络通信的基础框架,将复杂的数据传输过程分为物理层、数据链路层、网络层、传输层和应用层,每层各司其职,协同完成远程通信。该模型确保了不同设备和网络之间的互联互通,是现代互联网运行的核心机制。
236 5
|
4月前
|
网络协议 Linux 开发者
深入Linux中UDP网络通信机制编程探索
以上步骤概述了Linux中UDP网络通信的编程机制。在实现时,因关注细节和上下文环境可能有所调整,但大致流程是一致的。这些知识片段旨在帮助开发者快速上手Linux下的UDP编程,并提供可靠的信息作为编程的基础。在编程实践中,应结合实际业务需求,设计合适的数据传输协议,确保数据的正确性和实时性。
86 0
下一篇
开通oss服务