备份实战 要求: 统一用户为:www,uid=666 gid=6661.web01和web02可以上传图片2.nfs用户数据每天凌晨1点做备份3.校验数据的完整性4.nfs用户数据实时同步到backup的/data/目录下,做nfs的备机 环境
备份实战
要求:
统一用户为:www,uid=666 gid=6661.web01和web02可以上传图片2.nfs用户数据每天凌晨1点做备份3.校验数据的完整性4.nfs用户数据实时同步到backup的/data/目录下,做nfs的备机
环境准备
主机名
WanIP
LanIP
角色
部署服务
web01
10.0.0.7
172.16.1.7
nfs客户端
httpd、php、nfs-utils
web02
10.0.0.8
172.16.1.8
nfs客户端
httpd、php、nfs-utils
nfs
10.0.0.31
172.16.1.31
rsync客户端、nfs服务端
nfs-utils、rsync、inotify-tools、sersync
backup
10.0.0.41
172.16.141
rsync客户端、nfs服务端(备机)
nfs-utils、rsync
部署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 apache
Group apache
改成
User www
Group www
[root@web02 ~]# vim /etc/httpd/conf/httpd.conf
User apache
Group apache
改成
User www
Group www
# 3.创建www用户和组
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# adduser www -u 666 -g 666 -s /sbin/nologin -M
[root@web01 ~]# id www
uid=666(www) gid=666(www) groups=666(www)
[root@web02 ~]# groupadd www -g 666
[root@web02 ~]# adduser www -u 666 -g 666 -s /sbin/nologin -M
[root@web02 ~]# id www
uid=666(www) gid=666(www) groups=666(www)
# 4.部署代码
[root@web01 ~]# cd /var/www/html/
[root@web01 html]# rz
[root@web01 html]# ls
kaoshi_modify.zip
[root@web01 html]# unzip kaoshi_modify.zip
Archive: kaoshi_modify.zip
inflating: bg.jpg
inflating: index.html
extracting: info.php
inflating: upload_file.php
[root@web02 ~]# cd /var/www/html/
[root@web02 html]# rz
[root@web02 html]# unzip kaoshi_modify.zip
Archive: kaoshi_modify.zip
inflating: bg.jpg
inflating: index.html
extracting: info.php
inflating: upload_file.php
# 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@web01 html]# ll -d /var/www/html/user_data/
drwxr-xr-x 2 www www 6 May 21 12:59 /var/www/html/user_data/
[root@web02 html]# chown www:www /var/www/html/user_data/
[root@web02 html]# ll -d /var/www/html/user_data/
drwxr-xr-x 2 www www 6 May 21 12:59 /var/www/html/user_data/
# 7.启动httpd服务
[root@web01 html]# systemctl start httpd
[root@web01 html]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@web02 html]# systemctl start httpd
[root@web02 html]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# 8.检查进程和端口
[root@web01 html]# ps -ef | grep httpd
[root@web01 html]# netstat -lntup
[root@web02 html]# ps -ef | grep http
[root@web02 html]# netstat -lntup
# 9.浏览器访问
服务端
# 1.安装
[root@backup ~]# yum install -y rsync
# 2.创建用户
[root@backup ~]# groupadd www -g 666
[root@backup ~]# adduser www -u 666 -g 666 -s /sbin/nologin/ -M
[root@backup ~]# id www
uid=666(www) gid=666(www) groups=666(www)
# 3.配置
[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 = welcome to oldboyedu nfs _backup!
path = /backup
[nfs_data]
comment = welcome to oldboyedu nfs _data!
path = /data
# 4.创建目录
root@backup ~]# mkdir /data /backup
# 5.修改备份目录的属组和属主
[root@backup /]# chown www:www /data/
[root@backup /]# ll -d /data/
drwxr-xr-x 2 www www 6 May 21 15:51 /data/
[root@backup /]# chown www:www /backup/
[root@backup /]# ll -d /backup
drwxr-xr-x 2 www www 6 May 21 15:51 /backup
# 6.创建服务端的密码文件
[root@backup /]# vim /etc/rsync.passwd
13579
# 7.修改密码文件的权限为 600
[root@backup ~]# chmod 600 /etc/rsync.passwd
[root@backup ~]# ll /etc/rsync.passwd
-rw------- 1 root root 19 May 21 15:53 /etc/rsync.passwd
# 8.开启服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
nfs共享存储部署
# 1.安装
[root@nfs ~]# yum install -y rsync
# 2.客户端创建密码文件(客户端上的密码文件,只需要写密码,不需要写用户)
[root@nfs ~]# vim /etc/rsync.pass
13579
# 3.客户端上的密码文件也必须是600权限
[root@nfs ~]# chmod 600 /etc/rsync.pass
[root@nfs ~]# ll /etc/rsync.pass
-rw------- 1 root root 6 May 21 15:56 /etc/rsync.pass
# 4.创建共享目录
[root@nfs ~]# mkdir /data
# 5.创建www用户和组
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# adduser www -u 666 -g 666 -s /sbin/nologin/ -M
[root@nfs ~]# id www
uid=666(www) gid=666(www) groups=666(www)
# 6.授权共享目录
[root@nfs ~]# chown www:www /data/
[root@nfs ~]# ll -d /data/
drwxr-xr-x 2 www www 6 May 21 16:01 /data/
# 7.修改nfs配置文件
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666,all_squash)
# 8.启动nfs
[root@nfs ~]# systemctl start nfs
# 8.查看挂载点并web01和web02客户端将网站目录挂载到nfs /data目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data/
[root@web01 ~]# df -h | tail -1
172.16.1.31:/data 18G 1.7G 16G 10% /var/www/html/user_data
[root@web02 ~]# mount -t nfs 172.16.1.31:/data /var/www/html/user_data/
[root@web02 ~]# df -h | tail -1
172.16.1.31:/data 18G 1.7G 16G 10% /var/www/html/user_data
# 9.打开浏览器并上传文件
每日备份
# 1.查看文件
[root@web01 ~]# ls /var/www/html/user_data/
04_111.webp 04_333.webp
[root@web02 ~]# ls /var/www/html/user_data/
04_111.webp 04_333.webp
[root@nfs ~]# ls /data/
04_111.webp 04_333.webp
# 2.测试,将nfs客户端数据推送到backup服务端
[root@nfs ~]# rsync -avz /data/ rsync_backup@172.16.1.41::nfs_backup --password-file=/etc/rsync.pass
sending incremental file list
./
04_111.webp
04_333.webp
sent 48,423 bytes received 65 bytes 32,325.33 bytes/sec
total size is 48,208 speedup is 0.99
# 3.查看backup服务端是否有文件
[root@backup ~]# ls /backup/
04_111.webp 04_333.webp
# 4.编写脚本
[root@nfs ~]# vim /root/backup.sh
#!/bin/bash
bak_dir="/client_backup"
data_dir="/data"
host_name=`hostname`
ip=`/usr/sbin/ifconfig eth1|awk 'NR==2{print $2}'`
date_time=`date +%F`
export RSYNC_PASSWORD=123
#创建客户端的备份目录
mkdir -p $bak_dir
# 进入备份目录,压缩备份文件
cd $data_dir && \
tar zcf $bak_dir/${host_name}_${ip}_${date_time}.tar.gz ./*
#生成校验文件
cd $bak_dir && \
md5sum ${host_name}_${ip}_${date_time}.tar.gz > ${host_name}_${ip}_${date_time}.md5
#推送数据到rsync服务端
rsync -avz $bak_dir/ rsync_backup@172.16.1.41::nfs_backup
#保留7天内的文件
find $bak_dir -type f ! -mtime -7|xargs rm -f
# 5.配置邮箱
[root@backup ~]# yum install -y mailx
[root@backup ~]# vim /etc/mail.rc
set from=540080971@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=540080971@qq.com
set smtp-auth-password=邮箱授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
# 6.编写服务端脚本
[root@backup ~]# vim check_md5.sh
#!/bin/bash
bak_dir="/backup"
host_name=`hostname`
date_time=`date +%F`
cd ${bak_dir} && \
md5sum -c *${date_time}.md5|mail -s "${date_time}_数据备份校验" 540080971@qq.com
>/dev/null
find $bak_dir -type f ! -mtime -180 | xargs rm -f
# 7.编写定时任务
[root@nfs ~]# crontab -e
00 01 * * * /usr/bin/sh /root/backup.sh &>/dev/null
root@backup ~]# crontab -e
00 01 * * * /usr/bin/sh check_md5.sh &>/dev/null
实时同步sersync
# 1.安装sersync的依赖
[root@nfs ~]# yum install -y rsync inotify-tools
# 2.下载sersync
## 国外
[root@nfs ~]# wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
## 国内
[root@nfs ~]# wget http://test.driverzeng.com/other/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 3.创建安装目录
[root@nfs ~]# mkdir /application
# 4.解压sersync
[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /application/
# 5.改名
[root@nfs ~]# mv /application/GNU-Linux-x86/ /application/sersync-2.5.4
# 6.修改配置文件
[root@nfs ~]# vim /application/sersync2.5.4/confxml.xml
<!-- inotify监控动作配置 全部改成true -->
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>
<sersync>
<!-- 监控目录,推送数据的目录 /data -->
<localpath watch="/data">
<!-- rsync服务端的IP地址:172.16.1.41 和 模块名:nfs_data -->
<remote ip="172.16.1.41" name="nfs_data"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<!-- rsync命令执行时的选项 -->
<commonParams params="-az --delete"/>
<!-- rsync命令认证,打开认证,rsync匿名用户,密码文件 -->
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pass"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
# 7.启动sersync
[root@nfs ~]# /application/sersync2.5.4/sersync2 -rdo /application/sersync2.5.4/confxml.xml
# 8.查看是否实时同步成功
[root@nfs ~]# cd /data/
[root@nfs data]# touch 1.txt
[root@backup ~]# cd /data/
[root@backup data]# ls
04_111.webp 04_333.webp 1.txt
【转自:
外国服务器 http://www.558idc.com/shsgf.html转载请说明出处】