CentOS 备份实战

当筵意气临九霄,星离雨散不终朝。这篇文章主要讲述CentOS 备份实战相关的知识,希望能为你提供帮助。
备份实战 要求:
统一用户为:www,uid=666 gid=666
1.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.浏览器访问

CentOS 备份实战

文章图片

服务端
# 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:/data18G1.7G16G10% /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:/data18G1.7G16G10% /var/www/html/user_data# 9.打开浏览器并上传文件

【CentOS 备份实战】
CentOS 备份实战

文章图片

CentOS 备份实战

文章图片

每日备份
# 1.查看文件 [root@web01 ~]# ls /var/www/html/user_data/ 04_111.webp04_333.webp [root@web02 ~]# ls /var/www/html/user_data/ 04_111.webp04_333.webp [root@nfs ~]# ls /data/ 04_111.webp04_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.webpsent 48,423 bytesreceived 65 bytes32,325.33 bytes/sec total size is 48,208speedup is 0.99# 3.查看backup服务端是否有文件 [root@backup ~]# ls /backup/ 04_111.webp04_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==2print $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.webp04_333.webp1.txt


    推荐阅读