全网备份案例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网备份案例相关的知识,希望对你有一定的参考价值。
第1章 企业案例
rsync上机实战考试题:
某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:
每天晚上00点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须都为/backup。
2)Web服务器站点目录假定为(/var/www/html)。
3)Web服务器本地仅保留7天内的备份。
4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
5)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱。
第2章 项目准备工作
2.1 准备好三台主机
服务器说明 |
外网IP |
内网IP |
主机名 |
nginx web服务器 |
10.0.0.8/24 |
172.16.1.8/24 |
web01 |
NFS存储服务器 |
10.0.0.31/24 |
172.16.1.31/24 |
nfs01 |
rsync备份服务器 |
10.0.0.41/24 |
172.16.1.41/24 |
backup |
要求:每天晚上0点整在web服务器上打包备份系统配置文件,通过rsync命令推送备份服务器backup上备份保留。
2.2 开始部署backup服务器
2.2.1 确认是否安装软件
[[email protected] ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2.2.2 配置rsyncd.conf文件
. [[email protected] ~]# cat /etc/rsyncd.conf
######rsync_config_______________start
#created by oldboy 15:01 2007-6-5
#QQ 31333741 blog:http://oldboy.blog.51cto.com
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
path = /backup/
[nfsbackup]
path = /nfsbackup
#rsync_config_______________end
2.2.3 创建rsync账户及共享目录并修改目录属主为rsync
[[email protected] ~]# useradd -M -s /sbin/nologin rsync
[[email protected] ~]# mkdir /backup
[[email protected] ~]# chown -R rsync /backup
2.2.4 启动rsync --daemon服务
[[email protected] ~]# rsync --daemon
[[email protected] ~]# ss -antup | grep rsync
tcp LISTEN 0 5 :::873 :::* users:(("rsync",1851,5))
tcp LISTEN 0 5 *:873 *:* users:(("rsync",1851,4))
2.2.5 服务器端测试
[[email protected] ~]# ps -ef|grep rsync|grep -v grep
root 23049 1 0 Jan15 ? 00:00:00 rsync --daemon
[email protected] ~]# lsof -i:rsync
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 23049 root 3u IPv4 56971 0t0 TCP *:rsync (LISTEN)
rsync 23049 root 5u IPv6 56972 0t0 TCP *:rsync (LISTEN)
[[email protected] ~]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 23049/rsync
tcp 0 0 :::873 :::* LISTEN 23049/rsync
[[email protected] ~]# telnet 172.16.1.41 873
Trying 172.16.1.41...
Connected to 172.16.1.41.
Escape character is ‘^]‘.
@RSYNCD: 30.0
证明服务器端配置没有问题
2.3 部署web服务器
2.3.1 客户端配置
[[email protected] ~]# cat /etc/rsync.password
123456
[[email protected] ~]# ls -ld /etc/rsync.password
-rw------- 1 root root 7 Mar 14 19:25 /etc/rsync.password
2.3.2 客户端推送
[[email protected] backup]# rsync -avz /backup/ [email protected]::backup/ --password-file=/etc/rsync.password
sending incremental file list
./
1
2
3
4
说明客户端推送成功
2.3.3 web服务器端部署
#!/bin/bash
##############################################################
# File Name: bak1.sh
# Version: V1.0
# Author: xinlibao
# Organization: www.oldboyedu.com
# Created Time : 2017-03-15 22:23:50
# Description:
##############################################################
IP=$(hostname -I|awk -F "[ :]+" ‘{print $2}‘)
mkdir -p /backup/$IP /var/html/www/ /spool/cron/root/ /app/logs/
cd / &&\:
#compress
tar zcfh /backup/$IP/sys_config_$(date -d "1 day ago" +"%Y-%m-%d").tar.gz var/spool/cron/ etc/rc.local server/scripts &&\
tar zcfh /backup/$IP/webdata_$(date -d "1 day ago" +"%Y-%m-%d").tar.gz var/html/www/ &&\
tar zcfh /backup/$IP/access_log_$(date -d "1 day ago" +"%Y-%m-%d").tar.gz app/logs &&\
#check finger
find /backup -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/flag_$(date -d "1 day ago" +"%Y-%m-%d").txt
#push info
rsync -az /backup/ [email protected]::backup/ --password-file=/etc/rsync.password
#del data 7 days ago
find /backup -type f -mtime +7 ! -name "*week01.tar.gz"|xargs rm -f
2.3.4 nfs客户端部署
#!/bin/bash
##############################################################
# File Name: bak.sh
# Version: V1.0
# Author: xinlibao
# Organization: www.oldboyedu.com
# Created Time : 2017-03-15 22:45:08
# Description:
#############################################################
IP=$(hostname -I|awk -F "[ :]+" ‘{print $2}‘)
mkdir -p /backup/$IP /var/html/wwww/ /spool/cron/root/ /app/logs/
cd / &&\
#compress
tar zcfh /backup/$IP/sys_config_$(date -d "1 day ago" +"%Y-%m-%d").tar.gz var/spool/cron/root etc/rc.local server/scripts &&\
#check finger
find /backup -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/flag_$(date -d "1 day ago" +"%Y-%m-%d").txt
#push info
rsync -az /backup/ [email protected]::backup/ --password-file=/etc/rsync.password
#del data 7 days ago
find /backup -type f -mtime +7 ! -name "*week01.tar.gz"|xargs rm -f
2.3.5 backup服务端部署
#!/bin/bash
##############################################################
# File Name: mail.sh
# Version: V1.0
# Author: xinlibao
# Organization: www.oldboyedu.com
# Created Time : 2017-03-14 11:24:56
# Description:
##############################################################
#check data info
find /backup/*[0-9]*/ -type f -name "*.txt"|xargs md5sum -c>/tmp/mail.txt
mail -s "hello" [email protected] </tmp/mail.txt
#del data 180 days ago
find /backup -type f -mtime +180 ! -name "*week01.tar.gz"|xargs rm -f
2.4 定时任务推送每天00点
[[email protected] backup]# crontab -l
00 00 * * * /bin/sh /server/scripts/bak1.sh >/dev/null 2>&1
以上是关于全网备份案例的主要内容,如果未能解决你的问题,请参考以下文章