NFS结合Rsyncinotify

青春须早为,岂能长少年。这篇文章主要讲述NFS结合Rsyncinotify相关的知识,希望能为你提供帮助。
1.备份用户数据
目的:避免运维人员,或者其他技术人员误操作,误删除了用户数据,还可以恢复

2.实时同步用户数据
  1)保证用户数据的一致性
  2)解决NFS的单点故障

注意:统一用户
1.web01和web02可以上传图片
【NFS结合Rsyncinotify】2.nfs用户数据每天凌晨1点做备份
3.校验数据的完整性
4.nfs用户数据实时同步到backup的/data并且备份bckup的/backup目录下,做nfs的备机
环境准备

部署rsync

## 部署rsync服务端
# 0.关闭防火墙,关闭selinux,时间同步

# 1.安装rsync
[root@backup ~]# yum install -y rsync

# 2.修改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
#####################################
[nfs_backup]
comment = nfs_backup
path = /backup

[nfs_data]
comment = nfs_data
path = /data

# 3.创建www用户和组
[root@backup ~]# groupadd www -g 666
[root@backup ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

# 4.创建密码文件
[root@backup ~]# echo rsync_backup:123 > /etc/rsync.passwd

# 5.授权密码文件
[root@backup ~]# chmod 600 /etc/rsync.passwd

# 6.创建备份目录和实时同步目录
[root@backup ~]# mkdir /backup,data

# 7.授权备份目录和实时同步目录
[root@backup ~]# chown www.www /backup,data
[root@backup ~]# ll /backup/ /data/ -d
drwxr-xr-x 2 www www 6 May 20 10:23 /backup/
drwxr-xr-x 2 www www 6 May 20 10:23 /data/
#
8.启动rsync并加入开机自启
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd

# 9.检查进程和端口
[root@backup ~]# ps -ef|grep [r]sync
root 8059 1 0 10:24 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
[root@backup ~]# netstat -lntup|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 8059/rsync
tcp6 0 0 :::873 :::* LISTEN 8059/rsync


## 客户端部署

# 1.安装rsync和inotify
[root@nfs ~]# yum install -y rsync inotify-tools

# 2.测试数据推送
[root@nfs ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::nfs_backup
[root@nfs ~]# rsync -avz /tmp/ rsync_backup@172.16.1.41::nfs_data

# 3.测试实时同步
[root@nfs ~]# vim inotify.sh
#!/bin/bash
dir=/tmp
export RSYNC_PASSWORD=123
inotifywait -mrq --format %w %f -e create,delete,attrib,close_write $dir|while read
line; do
rsync -az --delete $dir rsync_backup@172.16.1.41::nfs_data
done &

部署NFS
## 部署nfs服务端
# 1.安装nfs服务
[root@nfs ~]# yum install -y nfs-utils
[root@backup ~]# yum install -y nfs-utils

# 2.修改nfs配置文件
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666,all_squash)
[root@backup ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666,all_squash)

# 3.创建www用户和组
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
[root@backup ~]# groupadd www -g 666
[root@backup ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

# 4.创建共享目录
[root@nfs ~]# mkdir /data
[root@backup ~]# mkdir /data

# 5.授权共享目录
[root@nfs ~]# chown www.www /data/
[root@backup ~]# chown www.www /data/

# 6.启动nfs服务并加入开机自启
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
[root@backup ~]# systemctl start nfs
[root@backup ~]# systemctl enable nfs

# 7.检查配置是否生效
[root@nfs ~]# cat /var/lib/nfs/etab
[root@backup ~]# cat /var/lib/nfs/etab

# 8.检查进程和端口
[root@nfs ~]# ps -ef|grep [n]fs
[root@nfs ~]# netstat -lntup


## 部署nfs客户端
# 1.安装nfs客户端
[root@web01 ~]# yum install -y nfs-utils
[root@web02 ~]# yum install -y nfs-utils

# 2.查看挂载点
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

[root@web01 ~]# showmount -e 172.16.1.41
Export list for 172.16.1.41:
/data 172.16.1.0/24

[root@web02 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

[root@web02 ~]# showmount -e 172.16.1.41
Export list for 172.16.1.41:
/data 172.16.1.0/24

# 3.测试挂载
[root@web01 ~]# mount -t nfs 172.16.1.41:/data /mnt
[root@web01 ~]# mount -t nfs 172.16.1.41:/data /media/
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
172.16.1.31:/data 19G 1.4G 18G 8% /mnt
172.16.1.41:/data 19G 1.4G 18G 8% /media

# 4.测试创建文件
[root@web01 ~]# touch /mnt/1.txt
[root@web01 ~]# ll /mnt/
total 0
-rw-r--r-- 1 666 666 0 May 20 10:51 1.txt
[root@web01 ~]# touch /media/1.txt
[root@web01 ~]# ll /media/
total 0
-rw-r--r-- 1 666 666 0 May 20 10:51 1.txt

部署web网站
# 1.安装httpd和php
[root@web01 ~]# yum install -y httpd php
[root@web02 ~]# yum install -y httpd php

# 2.修改httpd的配置文件
[root@web01 ~]# vim /etc/httpd/conf/httpd.conf
User www
Group www
[root@web02 ~]# vim /etc/httpd/conf/httpd.conf
User www
Group www

# 3.创建www用户和组
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

[root@web02 ~]# groupadd www -g 666
[root@web02 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

# 4.部署代码
[root@web01 ~]# cd /var/www/html/
[root@web01 html]# unzip kaoshi_modify.zip

[root@web02 ~]# cd /var/www/html/
[root@web02 html]# unzip kaoshi_modify.zip

# 5.创建用户上传目录
[root@web01 html]# mkdir /var/www/html/user_data
[root@web02 html]# mkdir /var/www/html/user_data

# 6.授权用户上传数据目录
[root@web01 html]# chown www.www /var/www/html/user_data
[root@web02 html]# chown www.www /var/www/html/user_data

# 7.启动httpd服务
[root@web01 html]# systemctl start httpd
[root@web01 html]# systemctl enable httpd

[root@web02 html]# systemctl start httpd
[root@web02 html]# systemctl enable httpd
# 8.检查。。。

# 9.浏览器访问
http://10.0.0.7/
http://10.0.0.8/

# 10.挂载用户上传数据目录
[root@web01 html]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data
[root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data

实时同步
# 1.编写实时同步脚本
[root@nfs ~]# vim inotify.sh
#!/bin/bash
dir=/data/
export RSYNC_PASSWORD=123
inotifywait -mrq --format %w %f -e create,delete,attrib,close_write $dir|while read
line; do
rsync -az --delete $dir rsync_backup@172.16.1.41::nfs_data
done &

# 2.上传图片测试


# 3.检查测试结果
[root@web01 html]# ll /var/www/html/user_data/
total 184
-rw-r--r-- 1 www www 186520 May 20 11:10 33_pikachu.jpg

[root@web02 html]# ll /var/www/html/user_data/
total 184
-rw-r--r-- 1 www www 186520 May 20 11:10 33_pikachu.jpg
[root@nfs ~]# ll /data/
total 184
-rw-r--r-- 1 www www 186520 May 20 11:10 33_pikachu.jpg
[root@backup ~]# ll /data/
total 184
-rw-r--r-- 1 www www 186520 May 20 11:10 33_pikachu.jpg

每日备份
## 1.编写客户端备份脚本
[root@nfs ~]# cat backup.sh
#!/bin/bash
bak_dir="/client_backup"
data_dir="/data"
host_name=`hostname`
ip=

    推荐阅读