NFS共享存储与数据备份

NFS共享存储与数据备份

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客户端 htppd,php,nfs
nfs 10.0.0.31 172.16.1.31 nfs服务端,rsync客户端 nfs,rsync
backup 10.0.0.41 172.16.1.41 rsync服务端,nfs备机 rsync,nfs

2.先使用nfs客户端搭建网站

1.安装apache和php:
	yum install -y apache php
2.下载代码到站点目录中	
3.解压代码:
	unzip kaoshi_modify.zip
4.让apache和nfs统一使用用户www uid和gid为666:
	创建用户及用户组:groupadd www -g 666
				   useradd www -u 666 -g 666
5.修改apache的配置文件,将用户和用户组改成www:
	vim /etc/httpd/conf/httpd.conf

6.将站点目录的属主和属组改成www:
	chown www:www /var/www/html

7.启动apache服务:
	systemctl start httpd
8.检查进程:
	ps -ef|grep httpd
9.端口检查:
	ntestat -lntup|grep httpd

10.打开浏览器访问

11.上传文件

12.查看站点目录下是否有user_data目录,查看该目录下是否有上传的文件,并查看它们的属主与属组是否是www用户

3.部署共享存储

1.先安装nfs服务:
	centos5,centos6:yum install -y nfs rpcbind
	centos7:yum install -y nfs-utils
2.配置NFS服务:vim /etc/exports
	# 共享目录   允许访问NFS服务端的网段(权限)
	/data       172.16.1.0/24(rw,sync,anonuid=666,anongid=666,all_squash)

3.创建www用户:
	groupadd www -g 666 
	useradd www -u 666 -g 666

4.创建共享目录并修改共享目录的属主与属组为nfs指定的匿名用户:
	mkdir /data
	chown www:www /data

5.关闭防火墙和selinux:
	systemctl stop firewalld
	setenforce 0
6.启动服务并加入开机自启
	systemctl start nfs
	systemctl enable nfs
7.检查进程:ps -ef|grep nfs
8.检查配置文件是否生效:cat /var/lib/nfs/etab

9.在客户端挂载nfs服务端的目录:
	mount -t nfs 172.16.1.31:/data /var/www/html/user_data

10.上传文件查看服务端是否能够获取到文件


11.将第二台客户端挂载到服务端上,查看是否能够共享到文件

4.nfs用户数据实时同步——服务端

1.先安装rsync:yum install -y rsync
2.配置rsync的配置文件:vim /etc/rsyncd.conf,加入下段内容
	# 服务的用户
    uid = www
    # 服务的用户组
    gid = www
    # 该服务的监听端口
    port = 873
    # 不以root身份运行,传输数据不使用系统用户
    fake super = yes
    # 禁锢目录,不允许获取到root权限
    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
    # 模块名
    [user_data]
    # 模块的描述信息
	comment = sync_data!
	# 数据同步文件的存放路径
	path = /user_data

3.创建配置文件中的系统用户:
	groupadd www -g 666
	useradd www -u 666 -g 666 -s /sbin/nologin -M
4.创建服务端的密码文件:
	1.vim /etc/rsync.passwd
		rsync_backup:123
	2.echo 'rsync_backup:123'>/etc/rsync.passwd
5.修改密码文件的权限为600:
	chmod 600 /etc/rsync.passwd
6.创建同步数据目录:
	mkdir /user_data
7.修改目录的属主和属组:
	chown -R www:www /backup/
8.启动rsync服务并加入开机自启:
	systemctl start rsyncd
	systemctl enable rsyncd
9.检查服务进程和服务端口:
	ps -ef|grep [r]sync
	netstat -lnutp|grep 873

4.1.客户端操作

1.安装rsync:yum install -y rsync
2.客户端创建密码文件(客户端的密码文件只需要写密码):
	1.vim /etc/rsync.passwd
		123
	2.echo '123'>/etc/rsync.passwd
3.修改客户端的密码文件的权限:
	chmod 600 /etc/rsync.passwd
4.推数据检测服务端是否能够接受到数据:
	 rsync -avz /tmp rsync_backup@172.16.1.41::backup --password- file=/etc/rsync.passwd
5.也可以使用环境变量免交互输入密码:
	export RSYNC_PASSWORD=123
	rsync -avz /tmp rsync_backup@172.16.1.41::backup
6.安装inotify:yum install -y inotify-tools
7.编写脚本:
[root@nfs ~]# vim rsyn-inotify.sh
# /bin/bash
dir="/data"
inotifywait  -mrq  --format '%w %f' -e create,delete,attrib,close_write $dir | while read line;do
        rsync -avz $dir/ rsync_backup@172.16.1.41::user_data --password-file=/etc/rsync.passwd
done &
8.执行脚本
9.上传文件查看备机上有没有同步数据

1652957996566

5.备份数据——服务端

1.先创建bcakup目录:mkdir /backup
2.修改目录的属主和属组:chown —R www:www /backup

5.1客户端

# 编写脚本发送到服务端
[root@nfs ~]# vim backup.sh

# /bin/bash
bak="/client_backup"
host_name=`hostname`
IP=`ifconfig eth1 |awk 'NR==2{print $2}'`
date_time=`date +%F`
export RSYNC_PASSWORD=123
# 1.创建客户端的备份目录
mkdir -p $bak
chown -R www:www $bak
# 2.进入备份目录,压缩备份文件
cd / && tar -zcf \
$bak/${host_name}_${IP}_${date_time}.tar.gz data
# 3.生成校验文件
cd $bak && \
md5sum ${host_name}_${IP}_${date_time}.tar.gz > ${host_name}_${IP}_${date_time}.md5
# 4.推送数据到rsync服务端
rsync -avz $bak/ rsync_backup@172.16.1.41::backup
# 5.保留七天的文件
find $bak -type f ! -mtime -7|xargs rm -f
# 6.做定时任务
	[root@nfs ~]# crontab -e
    #Usage:date_backup By:jl Date:2022/5/19
    00 01 * * * /bin/sh /root/backup.sh &> /dev/null

5.3 服务端

# 查看是否收到文件:
	[root@backup ~]# ll /backup/
    total 8
    -rw-r--r--. 1 www www   68 May 19 17:19 nfs_172.16.1.31_2022-05-19.md5
    -rw-r--r--. 1 www www 1052 May 19 17:19 nfs_172.16.1.31_2022-05-19.tar.gz
2.2.配置邮件
	2.1:安装发邮件服务:yum install -y mailx
	2.2:修改配置文件:vim/etc/mail.rc
	   	set bsdcompat
        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/
4.编写脚本:
	bak="/backup"
    host_name=`hostname`
    date_time=`date +%F`
    # 进入到接收文件目录并校验文件的结果发送到管理员的邮箱中
    cd ${bak} && \
    md5sum -c *${date_time}.md5|mail -s "${date_time}_数据备份校验" 管理员邮箱
    服务端只保留180天的备份数据
    find $bak -type f ! -mtime -180 |xargs rm -f
5.执行脚本查看邮箱是否能够接受到信息
	[root@backup ~]# sh backup.sh 

1652953342568

6.收到信息后编写定时任务:
[root@backup ~]# crontab -l
#Usage:date_backup By:jl Date:2022/5/19
01 01 * * * /bin/sh /root/backup.sh &> /dev/null
posted on   jilei  阅读(617)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示