将全网架构中所有服务器上重要的数据进行汇总备份保存
自动化:数据信息的自动备份
规范化:避免备份数据出错
①. 规划定义好备份服务器
a 部署rsync备份服务(采用rsync守护进程方式)
b 编写脚本文件管理备份数据信息
c 编写定时任务执行脚本管理数据(难点)
②. 确认验证好架构服务器
a 验证rsync备份服务
b 编写脚本文件统一备份数据信息(难点)
c 编写定时任务执行脚本备份数据
验证软件是否存在
[root@backup~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
检查配置文件
##rsyncd.conf start## 配置文件描述信息
uid = rsync #用户 远端的命令使用rsync访问共享目录
gid = rsync #用户组
use chroot = no #安全相关
max connections = 200 #最大的连接数
timeout = 300 #超时时间
pid file = /var/run/rsyncd.pid #存放服务运行的时候 进程的ID号(PID)
lock file = /var/run/rsync.lock #进程的锁文件
log file = /var/log/rsyncd.log #运行程序日志文件,显示出错信息等
[backup] #模块名称
path = /backup #模块对应的位置(路径)
ignore errors #忽略错误程序
read only = false #是否只读
list = false #是否可以列表
hosts allow = 172.16.1.0/24 #允许访问rsync服务器的客户范围(白名单)
hosts deny = 0.0.0.0/32 #禁止访问rsync服务器的客户范围(黑名单)
auth users = rsync_backup #不存在的用户,只用于开门(认证)
secrets file = /etc/rsync.passwor #不存在的用户进行认证时的密钥文件
comment = "backup dir by oldboy" #
创建虚拟用户管理rsync程序
[root@backup~]# # 创建用户
[root@backup~]# useradd -s /sbin/nologin -M rsync
创建完成后查看
[root@backup~]# id rsync
uid=500(rsync)gid=500(rsync) groups=500(rsync)
4. 检查rsync服务认证用户密码文件是否存在
[root@backup~]# cat /etc/rsync.password
rsync_backup:123456
记得检查密码文件权限是不是600
[root@backup~]# chmod 600 /etc/rsync.password
[root@backup~]# ll /etc/rsync.password
-rw------- 1root root 20 May 4 12:04/etc/rsync.password
5. 创建共享存储目录
[root@backup~]# # 创建目录
[root@backup~]# mkdir /backup -p
[root@backup~]# ll -d /backup/
drwxr-xr-x 2root root 4096 May 4 12:00 /backup/
[root@backup~]# # 修改备份目录权限
[root@backup~]# chown -R rsync.rsync /backup/
[root@backup~]# ll -d /backup/
drwxr-xr-x 2rsync rsync 4096 May 4 12:00 /backup/
6. 启动rsync 服务器
[root@backup~]# ps -ef |grep rsync
root 5138 1 0 01:31 ? 00:00:00 rsync --daemon
root 6503 6391 0 09:04 pts/1 00:00:00 grep --color=auto rsync
[root@backup~]# netstat -luntp |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 5138/rsync
tcp 0 0 :::873 :::* LISTEN 5138/rsync
没有的话 打开
rsync --daemon
7. 将rsync启动命令放入到开机自启动文件中
[root@backup~]# echo "rsync --daemon" >> /etc/rc.local
[root@backup~]# tail -1 /etc/rc.local
rsync--daemon
第一个里程碑要做
1. 创建用户认证密码文件,实现数据备份传输免密钥
[root@nfs01~]# cat /etc/rsync.password
123456
查看目录权限 修改成600
[root@nfs01~]# ll /etc/rsync.password
-rw-------1 root root 7 May 5 10:02/etc/rsync.password
2. 测试rsync服务数据备份传输
1. 本地创建backup备份目录 mkdir -p /backup
2. 将备份数据统一压缩进行保存 有软链接文件 tar -zchf
3. 推送备份目录数据到rsync备份服务器上 --password-file=
4. 删除本地保存的7天前的数据信息
find /backup/$Host_IP -type f -mtime+7 -name "*.tar.gz" |xargs rm -f
5. 对备份数据数据进行验证,加上指纹信息 md5sum 生成数据文件指纹信息
vim/server/scripts/backup_nginx.sh
#!/bin/bash
#oldboy at2017 5 backup data
Host_IP=$(hostname-I|awk '{print $2}')
Date_info=$(date+%F_week0%w)
# createbackup data dir
mkdir -p/backup
mkdir/var/html/www -p
mkdir/app/logs/ -p
# tar datainfo
cd /&&\
mkdir /backup/$Host_IP-p
tar zchf/backup/$Host_IP/sysbak_date_${Date_info}.tar.gz ./var/spool/cron/root ./etc/rc.local./server/scripts ./etc/sysconfig/iptables
tar zchf/backup/$Host_IP/www_date_${Date_info}.tar.gz ./var/html/www
tar zchf/backup/$Host_IP/logs_date_${Date_info}.tar.gz ./app/logs
# rsync pushfiger info
find/backup/$Host_IP/ -type f -name "*${Date_info}.tar.gz" |xargs md5sum>/backup/$Host_IP/finger_${Date_info}.txt
# rsync pushdata to rsync_server
rsync -az/backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
# cleardata info for 7 day ago
find/backup/$Host_IP -type f -mtime +7 -name "*.tar.gz" |xargs rm -f
find/backup/$Host_IP -type f -mtime +7 -name "finger*" |xargs rm -f
a. 验证数据完整性 md5sum -c 客户端传输过来的指纹文件
b. 将完整性验证结果,通过邮件发送给监管人员 邮箱的配置 与 发送邮件的方式(两种方式发送邮件)
01:发送邮件方式,利用文件方式表示邮件内容
mail -s "check data" 18735676310@163.com </tmp/mail.txt
02:发送邮件,利用命令行方式表示邮件内容
# echo "系统有异常问题,请检查系统"|mail -s "异常告警" 18735676310@163.com
说明:echo后面接上要发送的邮件信息,mail -s后面接上邮件标题,最后表示要将邮件发送给谁
c. 将180天的数据进行删除,保留每周一的数据
find /backup/ -type f -mtime +180 !-name "*week01.tar.gz"|xargs rm -f
vim /server/scritps/backup_rsync.sh
[root@backuptmp]# cat /server/scripts/backup_server.sh
#!/bin/bash
Date_info=$(date+%F_week0%w)
# check datainfo
find /backup/-type f -name "finger_${Date_info}.txt" |xargs md5sum -c>/tmp/figer_cheak.txt
# send cheakinfo mail
mail -s"cheak date" 18735676310@163.com </tmp/figer_cheak.txt
# delete180day ago date ; save week01
find /backup/-type f -mtime +180 ! -name "*week01.tar.gz" |xargs rm -f
① rsync客户端编写定时任务
nginx客户端的定时任务
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nginx.sh >/dev/null 2>&1
nfs客户端的定时任务
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nfs.sh >/dev/null 2>&1
② .rsync服务端编写定时任务
rsync服务端的定时任务
#crotab-id002:backup NFS nginx
00 06 * * * /bin/bash/server/scripts/backup_rsync.sh >/dev/null 2>&1
上面两个客户端的定时任务写的是每天晚上12点整进行打包发送,而rsync服务器的定时任务是每天早上6点进行发送。
① . 每周一的数据进行保存,确认清楚什么是周一的数据
/backup/$(hostname-I|awk '{print $2}')/sysbak_date_$(date+%F_week0%w).tar.gz./var/spool/cron/root
所以在打包压缩文件的时候就考虑到了这一点$(date+%F_week0%w)这个在文件名字上面加上了周几,所以在保存数据的时候能起到关键性作用。
find /backup/ -type f -mtime +180 ! -name"*week01.tar.gz" |xargs rm -f
② . 验证数据完整性是什么概念
因为数据是从客户端传过来的,为了保证数据没有修改和丢失,在发送数据时,给数据进行加密处理,然后服务端收到数据和加密处理文件时,会进行比对。如果串码一样,说明没有丢失和修改。
If you do not leave me . I will by your side untillthe life end
四级水平:你如果不离开我,我就和你同归于尽,
六级水平:你若不离不弃,我必生死相依。
八级水平:问世间情为何物?直教人生死相许。
十级水平:天地合,乃敢与君绝。
佛祖水平:你在或不在,爱就在那里,不增不减。
rsync守护进程模式配置步骤
检查服务端
1. 检查软件是否存在
[root@backup~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2. 检查配置文件
[root@backup~]# cat /etc/rsyncd.conf
##rsyncd.conftart##
uid =rsync
gid =rsync
usechroot = no
maxconnections = 200
timeout= 300
pidfile = /var/run/rsyncd.pid
lockfile = /var/run/rsync.lock
logfile = /var/log/rsyncd.log
[backup]
path= /backup
ignoreerrors
readonly = false
list= false
hostsallow = 172.16.1.0/24
hostsdeny = 0.0.0.0/32
authusers = rsync_backup,oldboy
secretsfile = /etc/rsync.password
[data]
path= /data
ignoreerrors
readonly = false
list= false
hostsallow = 172.16.1.0/24
hostsdeny = 0.0.0.0/32
authusers = rsync_backup,oldboy
secretsfile = /etc/rsync.password
3. 创建虚拟用户管理rsync程序
[root@backup~]# # 创建用户
[root@backup~]# useradd -s /sbin/nologin -M rsync
4. 检查rsync服务认证用户密码文件是否存在
[root@backup~]# cat /etc/rsync.password
rsync_backup:123456
记得检查密码文件权限是不是600
5. 创建共享存储目录
mkdir /backup/ -p
修改目录的属组和属主
[root@backup~]# ll -d /backup/
drwxr-xr-x5 rsync rsync 4096 May 5 15:35 /backup/
6. 启动rsync 服务器
[root@backup~]# ps -ef |grep rsync
root 5138 1 0 01:31 ? 00:00:00 rsync --daemon
root 6503 6391 0 09:04 pts/1 00:00:00 grep --color=auto rsync
[root@backup~]# netstat -luntp |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 5138/rsync
tcp 0 0 :::873 :::* LISTEN 5138/rsync
没有的话 打开
rsync --daemon
7. 将rsync启动命令放入到开机自启动文件中
[root@backup~]# echo "rsync --daemon" >> /etc/rc.local
[root@backup~]# tail -1 /etc/rc.local
rsync--daemon
客户端:
1. 创建用户认证密码文件,实现数据备份传输免密钥
[root@nfs01~]# cat /etc/rsync.password
123456
查看目录权限 修改成600
[root@nfs01~]# ll /etc/rsync.password
-rw-------1 root root 7 May 5 10:02 /etc/rsync.password
2. 测试rsync服务数据备份传输
第二个里程碑:编写数据备份脚本
nginx nfs
--rsync客户端编写的备份脚本
客户端nginx编写的脚本
vim/server/scripts/backup_nginx.sh 要规范脚本的名称和存放脚本的目录
#!/bin/bash 命令解释器
#oldboy at2017 5 backup data 必要的注释
Host_IP=$(hostname-I|awk '{print $2}') 设置的别名
Date_info=$(date+%F_week0%w) 设置的别名
# createbackup data dir 要创建的目录
mkdir -p/backup
mkdir/var/html/www -p
mkdir/app/logs/ -p
# tar datainfo 打包目的的注释
cd /&&\ 一定要在根目录下面进行打包,
mkdir/backup/$Host_IP -p
tar zchf/backup/$Host_IP/sysbak_date_${Date_info}.tar.gz ./var/spool/cron/root ./etc/rc.local./server/scripts ./etc/sysconfig/iptables 记得要加h参数,可以打包软链接
tar zchf /backup/$Host_IP/www_date_${Date_info}.tar.gz ./var/html/www
tar zchf/backup/$Host_IP/logs_date_${Date_info}.tar.gz ./app/logs
# rsync pushfiger info
find/backup/$Host_IP/ -type f -name "*${Date_info}.tar.gz" |xargs md5sum>/backup/$Host_IP/finger_${Date_info}.txt 把找到的文件进行加密
# rsync pushdata to rsync_server
rsync -az/backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
免密钥进行打包传输数据
# cleardata info for 7 day ago 删除七天前的文件
find/backup/$Host_IP -type f -mtime +7 -name "*.tar.gz" |xargs rm -f
find/backup/$Host_IP -type f -mtime +7 -name "finger*" |xargs rm -f
--nfs 客户端编写的备份脚本
vim/server/scripts/backup_nfs.sh 要规范脚本的名称和存放脚本的目录
#!/bin/bash 命令解释器
#oldboy at2017 5 backup data 必要的注释
Host_IP=$(hostname-I|awk '{print $2}')
Date_info=$(date+%F_week0%w)
# createbackup data dir
mkdir -p/backup
# tar datainfo
cd /&&\ 一定要在根目录下面进行打包
mkdir/backup/$Host_IP -p
tar zchf
/backup/$Host_IP/sysbak_date_${Date_info}.tar.gz ./var/spool/cron/root ./etc/rc.local./server/scripts ./etc/sysconfig/iptables 记得要加h参数,可以打包软链接
# rsync pushfiger info
find/backup/$Host_IP/ -type f -name "*${Date_info}.tar.gz" |xargs md5sum>/backup/$Host_IP/finger_${Date_info}.txt
把找到的文件进行加密
# rsync pushdata to rsync_server
rsync -az/backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
免密钥进行打包传输数据
# cleardata info for 7 day ago
find/backup/$Host_IP -type f -mtime +7 -name "*.tar.gz" |xargs rm -f
find/backup/$Host_IP -type f -mtime +7 -name "finger*" |xargs rm -f
备份服务器端 --rsync服务端编写备份脚本
--rsync服务端编写备份脚本
vim/server/scripts/backup_rsync.sh要规范脚本的名称和存放脚本的目录
#!/bin/bash 命令解释器
Date_info=$(date+%F_week0%w)
# check datainfo 查找传过来的密码就行比对,将结果追加到figer_cheak.txt文件中
find /backup/-type f -name "finger_${Date_info}.txt" |xargs md5sum -c>/tmp/figer_cheak.txt
# send cheakinfo mail 把文件的内容发送到邮箱
mail -s"cheak date" 18735676310@163.com </tmp/figer_cheak.txt
# delete180day ago date ; save week01 删除180天的文件除了每星期一的文件
find /backup/-type f -mtime +180 ! -name "*week01.tar.gz" |xargs rm -f
第三个里程碑:配置定时任务
①rsync客户端编写定时任务
nginx客户端的定时任务
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nginx.sh >/dev/null 2>&1
nfs客户端的定时任务
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nfs.sh >/dev/null 2>&1
②. rsync服务端编写定时任务
rsync服务端的定时任务
#crotab-id002:backup NFS nginx
00 06 * * * /bin/bash/server/scripts/backup_rsync.sh >/dev/null 2>&1
上面两个客户端的定时任务写的是每天晚上12点整进行打包发送,而rsync服务器的定时任务是每天早上6点进行发送。因为如果服务端也是晚上12点整进行备份,怕客户端的还没有发送过来就没有文件,所有往后推一点时间最好。
对传输的文件进行加密
[root@nfs01~]# md5sum /etc/hosts
c559a5da81a3ecc708ae5d84985a0776 /etc/hosts
指纹加密特点:雪崩效应
进入到邮件发送的配置文件中,编辑发送邮件的参数信息
vim/etc/mail.rc
setfrom=18735676310@163.com smtp=smtp.163.com
setsmtp-auth-user=18735676310@163.com smtp-auth-password=Zr950220 smtp-auth=login
setfrom=邮箱地址@163.com smtp=smtp.163.com <-邮件发送邮件服务器域名,此处为163邮箱的发送服务器域名
setsmtp-auth-user=邮箱账号 smtp-auth-password=登录邮箱密码 smtp-auth=login
说明:设置发送邮件是从哪个公共邮箱地址发送,采用的发送邮件服务器域名,公共邮箱账号和密码
01:发送邮件方式,利用文件方式表示邮件内容
mail -s "check data"2722982316@qq.com </tmp/mail.txt
02:发送邮件,利用命令行方式表示邮件内容
# echo "系统有异常问题,请检查系统"|mail -s "异常告警" 17778058507@163.com
说明:echo后面接上要发送的邮件信息,mail -s后面接上邮件标题,最后表示要将邮件发送给谁
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。