NFS共享存储与rsync实时同步
NFS共享存储与rsync实时同步
0.需求
1.web01和web02可以上传图片
2.nfs用户数据每天凌晨1点做备份
3.校验数据的完整性
4.nfs用户数据实时同步到backup的/data/目录下,做nfs的备机
1.环境准备
主机名 | WanIP | LanIP | 角色 | 部署服务 |
---|---|---|---|---|
web01 | 10.0.0.7 | 172.16.1.7 | nfs客户端 | httpd,php,nfs |
web02 | 10.0.0.8 | 172.16.1.8 | nfs客户端 | httpd,php,nfs |
nfs | 10.0.0.31 | 172.16.1.31 | nfs服务端,rsync客户端 | nfs,rsync,inotify |
10.0.0.41 | 172.16.1.41 | rsync服务端,nfs服务端(备机) | nfs,rsync |
部署web网站
1.安装apache,php:yum install -y httpd php
2.下载交作业网站的压缩包
[root@web02 /var/www/html]# ll
total 28
-rw-r--r--. 1 root root 27020 May 18 11:54 kaoshi_modify.zip
3.解压该压缩包:
unzip kaoshi_modify.zip
4.修改配置文件将用户修改成www:
5.创建用户
1.创建www用户:groupadd -g 666 www
useradd -u 666 -g 666 www -s /sbin/nologin -M
2.查看用户:
[root@web02 /var/www/html]# id www
uid=666(www) gid=666(www) groups=666(www)
3.修改站点目录的属主与属组: chown -R www:www /var/www/html
[root@web02 /var/www/html]# ll -d
drwxr-xr-x. 2 www www 102 May 21 14:59 .
6.启动服务并加入开机自启:
systemctl start httpd
systemctl enable httpd
7.检查进程和端口
8.打开浏览器访问网站
9.上传文件测试是否成功
部署NFS服务—服务端
1.安装nfs服务:yum install -y nfs-utils
2.修改配置文件:[root@nfs ~]# vim /etc/exports
# 共享目录 允许通过的网段(参数)
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666,all_squash)
3.根据配置文件创建目录
mkdir /data
4.创建www用户
groupadd -g 666 www
useradd -u 666 -g 666 www -s /sbin/nologin -M
5.修改共享目录属主
[root@backup ~]# ll /data -d
drwxr-xr-x. 2 www www 6 May 21 15:50 /data
6.开启nfs服务并加入开机自启:
[root@backup ~]# systemctl start nfs
[root@backup ~]# systemctl enable nfs
7.检查进程
8.查看配置文件是否生效
[root@nfs ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
NFS客户端
1.安装nfs服务:yum install -y nfs—utils
2.查看挂载点:
[root@web02 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
3.挂载目录
mount -t nfs 172.16.1.31:/data /var/www/html/user_data/
4.查看是否挂载成功
5.上传文件查看是否能够收到
使用sersync实现同步
1.部署rsync——服务端
0.安装rsync:yuminsatll -y rsync
1.修改rsync的配置文件:
[root@backup ~]# vim /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
[sync_data]
comment = sync_data
path = /data
2.根据配置文件创建用户
groupadd -g 666 www
useradd -u 666 -g 666 www -s /sbin/nologin -M
3.创建密码文件
echo 'rsync_backup:123'>/etc/rsync.passwd
4.修改密码文件的权限为600
[root@backup ~]# chmod 600 /etc/rsync.passwd
[root@backup ~]# ll /etc/rsync.passwd
-rw-------. 1 root root 17 May 21 16:27 /etc/rsync.passwd
5.创建同步目录
mkdir /data
6.修改目录的属主
chown -R www:www /data
[root@backup ~]# ll /data -d
drwxr-xr-x. 2 www www 6 May 21 15:50 /data
7.启动rsync服务并加入开机自启:
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
8.检查进程和端口
rsync客户端
1.先安装rsync和inotify:yum install -y rsync inotify-tools
2.创建rsync密码文件:
[root@nfs ~]# echo '123'>/etc/rsync.passwd
[root@nfs ~]# cat /etc/rsync.passwd
123
3.修改密码文件权限为600
chmod 600 /etc/rsync.passwd
4.推数据测试rsync是否配置成功
2.安装sersync的二进制包:
1.创建放置安装包的目录
mkdir /application
2.获取安装包:
wget http://test.driverzeng.com/other/sersync2.5.4_64bit_binary_stable_final.tar.gz
3.解压安装包
[root@nfs /application]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@nfs /application]# ll
total 712
drwxr-xr-x. 2 root root 41 Oct 26 2011 GNU-Linux-x86
4.修改sersync配置文件
vim /application/GNU-Linux-x86/confxml.xml
5.启动服务
[root@nfs /application/GNU-Linux-x86]# /application/GNU-Linux-x86/sersync2 -rdo /application/GNU-Linux-x86/confxml.xml
6.在/data目录下创建一个文件查看是否同步
每日备份——服务端
1.客户端提前准备存放的备份的目录,目录规则如下: /client_backup
2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至 /client_backup 包名: nfs_172.16.1.31_2022-05-
16.tar.gz
3.客户端最后将备份的数据进行推送至备份服务器
4.客户端每天凌晨1点定时执行该脚本
5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
服务端需求
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除
1.创建备份目录
mkdir /backup
2.修改目录的属主
chown -R www:www /backup
[root@backup ~]# ll /backup/ -d
drwxr-xr-x. 2 www www 6 May 21 17:41 /backup/
rsync客户端
1.测试能否发送文件
2.编写脚本实现备份
[root@nfs ~]# vim backup.sh
bak_dir="/client_backup"
host_name=`hostname`
ip=`/sbin/ifconfig eth1|awk 'NR==2{print $2}'`
bak_time=`date +%F`
mkdir -p $bak_dir
tar -zcPf $bak_dir/${host_name}_${ip}_${bak_time}.tar.gz /data
cd $bak_dir && \
md5sum *${bak_time}.tar.gz > ${host_name}_${ip}_${bak_time}.md5
rsync -avz $bak_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd
find $bak_dir -type f ! -mtime -7|xargs rm -f
3.测试脚本并校验文件是否丢失
4.编写定时任务
#Usage:date_backup By:jl Date:2022/5/21
00 01 * * * /usr/bin/sh /root/backup.sh &> /dev/null
rsync服务端编写
1.安装发邮件工具:yum install -y mailx
2.修改配置文件:vim /etc/mail.rc
set from=发送邮件的邮箱
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=发送邮件的邮箱
set smtp-auth-password=授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
3.编写脚本 vim md5.sh
bak_dir="/backup"
host_name=`hostname`
bak_time=`date +%F`
cd $bak_dir && \
md5sum -c *${bak_time}.md5 | mail -s '校验文件' qq邮箱
find /backup/ -type f ! -mtime -180 |xargs rm -f
4.测试脚本 :sh md5.sh
5.编写定时任务
[root@backup ~]# crontab -l
# Usage:date_backup By:jl Date:2022/5/21
01 01 * * * /usr/bin/sh /root/mds.sh &> /dev/null
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)