第1章 项目准备工作
1.1 基本备份要求
已知3台服务器主机名分别为:web01,backup,nfs01,主机信息如下表:
服务器说明
外网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上备份保留。
具体要求如下:
1)web服务器和备份服务器的备份目录都必须为/backup
2)要备份的系统配置文件包括但不限余:
a.定时任务服务的配置文件(/var/spool/cron/root)
b.开机自启动的配置文件(/etc/rc.local)
c.日常脚本的目录(/server/scripts)
d.防火墙iptables的配置文件(/etc/sysconfig/iptables)
3)web服务器站点目录为(/var/html/www)
4)Web服务器A访问日志的路径为(/app/logs)
5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
6)备份服务器上,保留最近7天的备份数据,同时保留6个月内每周一的所有数据。
7)备份服务器上要安装备份数据服务器的内网IP为目录保存备份,备份的文件安装时间名字保存。
8)需要确保备份的数据尽量完整争取,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员的邮箱中。
1.2 简单逻辑图
1.3 解题思路
1)搭建backup服务器。
a.搭建rsync服务
2)搭建web服务器。
1.验证rsync服务能否推送成功。
2.开发脚本,实现打包,备份,推送,校验,删除。
3.配置定时任务定时推送,每天0点定时推送。
3)搭建backup服务器。
1.实现校验,删除,报警。
2.配置定时任务每天6点定时执行。
4)搭建nfs服务器。
1.验证rsync服务能否推送成功。
2.开发脚本,实现打包,备份,推送,校验,删除。
3.配置定时任务定时推送,每天0点定时推送。
第2章 项目实施
2.1 搭建backup服务器。
2.1.1 rsync的默认配置文件是/etc/rsyncd.conf,配置文件默认是空的,需要自己编辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@backup ~]
# cat /etc/rsyncd.conf
#rsync_config_____________________________start
#created by oldboy 15:01 2007-6-5
##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/rsyncd
.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
[luo]
path =
/luo
ignore errors
read
only =
false
list =
false
hosts allow = 172.16.1.0
/24
#hosts deny = 0.0.0.0/32
auth
users
= tang
secrets
file
=
/etc/tang
#rsync_config________________________end
2.1.2 添加用户rsync
1
2
3
[root@backup ~]
# useradd rsync -s /sbin/nologin -M
[root@backup ~]
# cat /etc/passwd|grep rsync
rsync
:x:501:501::
/home/rsync
:
/sbin/nologin
为什么用虚拟用户?
应答:文件和进程都要满足属主的要求,文件和进程的存在一定是需要用户的,也是为了安全问题。
2.1.3 根目录下添加backup目录
1
2
3
4
[root@backup ~]
# mkdir -p /backup/
[root@backup ~]
# chown -R rsync.rsync /backup/
[root@backup ~]
# ls -ld /backup/
drwxr-xr-x 3
rsync
rsync
20480 1月 18 09:51
/backup/
2.1.4 创建rsync的密码配置文件,默认也是空的
1
2
3
4
5
[root@backup ~]
# cat /etc/rsync.password
rsync_backup:oldboy
[root@backup ~]
# chmod 600 /etc/rsync.password
[root@backup ~]
# ls -l /etc/rsync.password
-rw-------. 1 root root 20 11月 29 01:14
/etc/rsync
.password
2.1.5 开启服务并开机自启动
1
2
[root@backup ~]
# tail -1 /etc/rc.local
/usr/bin/rsync
--daemon
2.1.6 服务器端测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@backup ~]
# ps -ef|grep rsync|grep -v grep
root 23049 1 0 Jan15 ? 00:00:00
rsync
--daemon
root@backup ~]
# 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)
[root@backup ~]
# 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
[root@backup ~]
# telnet 172.16.1.41 873
Trying 172.16.1.41...
Connected to 172.16.1.41.
Escape character is
'^]'
.
@RSYNCD: 30.0
说明服务器端配置没有问题
2.2 验证rsync服务能否推送成功。
2.2.1 客户端配置
1
2
3
4
[root@web01 ~]
# cat /etc/rsync.password
oldboy
[root@web01 ~]
# ls -ld /etc/rsync.password
-rw------- 1 root root 7 1月 18 16:01
/etc/rsync
.password
2.2.2 客户端推送
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@web01 backup]
# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
sending incremental
file
list
./
1
10
2
3
4
5
6
7
8
9
说明客户端推送成功
2.2.3 Web服务器实现打包,备份,推送,删除。
2.2.3.1 命令行备份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@web01 backup]
# mkdir /var/html/www -p
[root@web01 scripts]
# mkdir /app/logs -p
[root@web01 /]
# tar zcvfh /backup/sys_config_$(date +%F).tar.gz ./var/spool/cron/root ./server/scripts/ ./etc/rc.local
.
/var/spool/cron/root
.
/server/scripts/
.
/server/scripts/bak
.sh
.
/etc/rc
.
local
[root@web01 /]
# tar zcvfh /backup/webdata_config_$(date +%F).tar.gz ./var/html/www/
.
/var/html/www/
.
/var/html/www/4
.
/var/html/www/7
.
/var/html/www/5
.
/var/html/www/6
.
/var/html/www/2
.
/var/html/www/8
.
/var/html/www/3
.
/var/html/www/10
.
/var/html/www/1
.
/var/html/www/9
[root@web01 /]
# tar zcvfh /backup/access_log_config_$(date +%F).tar.gz ./app/logs/
.
/app/logs/
.
/app/logs/f
.
/app/logs/c
.
/app/logs/a
.
/app/logs/d
.
/app/logs/e
.
/app/logs/b
.
/app/logs/g
2.2.3.2 推送:
1
[root@web01 backup]
# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password
2.2.3.3 删除:
1
[root@web01 backup]
# find /backup/ -type f -mtime +7|xargs rm -rf
2.2.3.4 全部放到脚本里:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cat
/server/scripts/bak
.sh
#!/bin/sh
export
PATH=
/usr/local/sbin
:
/usr/local/bin
:
/sbin
:
/bin
:
/usr/sbin
:
/usr/bin
:
/root/bin
IP=$(
ifconfig
eth1|
awk
-F
"[ :]+"
'NR==2{print $4}'
)
Bak_Path=
/backup
mkdir
$Bak_Path/$IP -p
if
[ $(
date
+%w) -
eq
2 ];
then
date
=
"$(date +%F -d "
-1day
")_week1"
else
date
=
"$(date +%F -d "
-1day
")"
fi
cd
/ &&\
tar
zcfh $Bak_Path/$IP
/sys_config_
${
date
}.
tar
.gz .
/var/spool/cron
.
/etc/rc
.
local
.
/server/sc
ripts &&\
tar
zcf $Bak_Path/$IP
/webdata_
${
date
}.
tar
.gz var
/html/www/
&&\
tar
zcf $Bak_Path/$IP
/access_log_
${
date
}.
tar
.gz app
/logs/
&&\
find
$Bak_Path -
type
f -name
"*.tar.gz"
|
xargs
md5sum >$Bak_Path/$IP
/flag_
${
date
} &&\
rsync
-az $Bak_Path/ rsync_backup@172.16.1.41::backup/ --password-
file
=
/etc/rsync
.password
&&\
###delete data before 7days ago by chen at 20170118
find
$Bak_Path -
type
f -mtime +7|
xargs
rm
-f
~
2.2.3.5 每天00点定时任务推送
1
2
[root@web01 backup]
# crontab -l
00 00 * * *
/bin/sh
/server/scripts/bak
.sh >
/dev/null
2>&1 完成客户端的定时任务推送工作
第3章 backup服务器实现校验,删除,报警
首先我们测试下如果实现服务器报警
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@backup ~]
# tail -1 /etc/mail.rc
set
from=njlc_jsbcmq@163.com smtp=smtp.163.com smtp-auth-user=njlc_jsbcmq smtp-auth-password=hgg7454196ls smtp-auth=login
[root@backup ~]
# echo "31qqi zuzi bang"|mail -s "nihao" 373967205@qq.com
就可以收到邮件了
[root@backup scripts]
# cat checkbak.sh
#!/bin/bash
export
if
[ $(
date
+%w) -
eq
2 ];
then
date
=
"$(date +%F -d "
-1day
")_week1"
else
date
=
"$(date +%F -d "
-1day
")"
fi
find
/backup/
-name
"flag_${date}*"
|
xargs
md5sum -c &>>
/tmp/mail_
$(
date
+%F).log
find
/backup/
-
type
f -name
"*.tar.gz"
-a ! -name
"*week1*"
-mtime +1|
xargs
rm
-f
mail -s
"backup ~date~"
373967205@qq.com <
/tmp/mail_
$(
date
+%F).log
\
cp
/tmp/mail_
$(
date
+%F).log
/tmp/mail_
$(
date
+%F).log.ori
>
/tmp/mail_
$(
date
+%F).log
做定时任务,每天上午6点发送邮箱
[root@backup scripts]
# crontab -l
* * * * *
/usr/sbin/ntpdate
time
.nist.gov >
/dev/null
2>&1
* * * * *
/bin/bash
/server/scripts/checkbak
.sh >
/dev/null
2>&1
项目完成
附件:http://down.51cto.com/data/2368559
转载于:https://www.cnblogs.com/liujiacai/p/8409306.html
相关资源:各显卡算力对照表!