码迷,mamicode.com
首页 > 其他好文 > 详细

全网备份案例

时间:2018-03-15 21:08:56      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:linux全网备份案例

第1章 案例及要求

1.1 案例
某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份
1.2 案例要求
1) 每天晚上00点整在web服务器A上打包备份重要目录并通过rsync命令推送到服务器B上备份
2) 需要备份的文件目录有(原则上,只要是运维人员写入或更改的数据,都需要备份)
/var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /var/www/html /app/logs
3) 为了规范化,每台web服务器进行本地备份时都备份到/backup/目录下
4) 每台web服务器进行本地备份时,都备份到/backup/下以本机IP地址命名的目录中
5) 打包的文件名中需要包含执行当天的日期
6) 为了方便知道每次备份是否成功,我们需要做如下操作
在每台web服务器上检查备份是否成功
在存储备份数据的服务器上检查备份数据是否成功,并发送邮件至管理员邮箱
7) 由于备份服务器空间有限,需要删除超过180天的备份数据,但每周六的备份数据需要永久保留

第2章 解答过程

2.1 配置rsync备份服务器,并在客户端实现推送
2.1.1 rsync备份服务器的配置过程
? 【查看安装环境】
[root@backup ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@backup ~]# uname -r
2.6.32-696.el6.x86_64
? 【查看是否有rsync的安装包】
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
? 【添加rsync用户,用来管理本地目录】
[root@backup ~]# useradd rsync -s /sbin/nologin -M
[root@backup ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
注意:该用户是虚拟用户,不需要进行登录
? 【生成配置文件/etc/rsyncd.conf】
[root@backup ~]# vim /etc/rsyncd.conf
################################写入的内容如下#################################
#rsync_config____start
#created by oldboy
##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
#log file = /rsync/rsyncd.log
[backup]
path = /backup/
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
#rsync_config_____end
[root@backup ~]# cat /etc/rsyncd.conf #查看
注意:Centos6默认是不存在该文件的,但是Centos7是存在该文件的
? 【启动并检查是否启动成功】
[root@backup ~]# rsync –daemon
[root@backup ~]# ps -ef |grep rsync|grep -v grep
? 【建立共享目录并赋予权限】
[root@backup ~]# mkdir /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
注意:如果目录不存在,会报错,详细错误见下面的错误总结
? 【创建密码文件并编辑】
[root@backup ~]# vim /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
注意:密码文件的格式为: 用户:密码
? 【更改密码文件的权限并检查】
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 Jan 16 20:21 /etc/rsync.password
注意:密码文件的权限是600
? 【查看rsync服务的端口】
[root@backup ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 1201 root 4u IPv4 10536 0t0 TCP :rsync (LISTEN)
rsync 1201 root 5u IPv6 10537 0t0 TCP
:rsync (LISTEN)
[root@backup ~]# netstat -tunlp|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 1201/rsync
tcp 0 0 :::873 :::
LISTEN 1201/rsync
? 【将rsync服务加入开机自启动】
[root@backup ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local
/usr/bin/rsync --daemon
2.1.2 客户端的配置
? 【建立密码文件,只需在文件中写入密码即可】
[root@nfs01 ~]# vim /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
123456
? 【给密码文件设置权限】
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 Mar 8 10:56 /etc/rsync.password
注意:密码文件的权限是600
【建立打包目录】
[root@nfs01 ~]# mkdir /backup/
? 【在客户端建立测试文件并测试】
[root@nfs01 ~]# cd /backup/
[root@nfs01 backup]# touch {01..10}
[root@nfs01 backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
[root@nfs01 backup]# rsync -avz /backup/ rsyncbackup@172.16.1.41::backup/ --password-
file=/etc/rsync.password
2.2 在Web服务器上,实现打包、推送、删除、定时任务推送
? 【脚本】
#!/bin/sh
IP=$(ifconfig eth1|awk -F "[ :]+" ‘NR==2 {print$4}‘)
Path=/backup/$IP
if [ $(date +%w) -eq 0 ]
then
Time=week
$(date +%F-%w -d "-1day")
else
Time=$(date +%F -d "-1day")
fi
mkdir -p $Path
cd / &&\
tar zcf $Path/back$Time.tar.gz var/spool/cron/root etc/sysconfig/iptables etc/rc.local var/www/html/ /app/logs/ &&\
md5sum $Path/back
$Time.tar.gz >>$Path/flag_$Time.log &&\
rsync -az /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password &&\
find /backup/ -type f -mtime +7 ( -name ".tar.gz" -o -name ".log" )|xargs rm -f

2.3 在备份服务器上实现发送邮件并删除180前的数据,并发送邮件
【脚本】
#!/bin/sh
if [ $(date +%w) -eq 0 ]
then
Time="week_$(date +%F-%w -d "-1day")"
else
Time=$(date +%F -d "-1day")
fi
find /backup/ -type f -name "${Time}.log"|xargs md5sum -c >>/backup/${Time}_result.log
mail -s "$Time bak result " xxxx@163.com</backup/${Time}_result.log
find /backup/ -type f -mtime +180 ! -name "_week-6" |xargs rm -f
2.3.1 Web服务器上的定时任务
[root@web01 ~]# crontab -l
#backup
00 00
/bin/sh /server/scripts/backup.sh >/dev/null 2>&1
2.3.2 备份服务器上的定时任务
[root@backup ~]# crontab -l
#del
00 00 * /bin/sh /server/scripts/del.sh >/dev/null 2>&1
2.3.3 邮件发送的配置
编辑/etc/mail.rc文件然后在文件的最后一行加入下面的内容
set from=xxxxx@163.com
set smtp=pop.163.com
set smtp-auth-user=xxxxxxx
set smtp-auth-password=xxxxxxx
set smtp-auth=login
上面的各行的解释如下:
from: 当别人收到邮件时显示的发件人。
smtp: smtp服务器地址
smtp-auth: 指定SMTP的认证方式。默认是LOGIN方式
smtp-auth-user: 指定用户名
smtp-auth-password: 指定密码(163是授权码)

全网备份案例

标签:linux全网备份案例

原文地址:http://blog.51cto.com/lzhnb/2087328

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!