本文共 4807 字,大约阅读时间需要 16 分钟。
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/logs3) 为了规范化,每台web服务器进行本地备份时都备份到/backup/目录下4) 每台web服务器进行本地备份时,都备份到/backup/下以本机IP地址命名的目录中5) 打包的文件名中需要包含执行当天的日期6) 为了方便知道每次备份是否成功,我们需要做如下操作在每台web服务器上检查备份是否成功在存储备份数据的服务器上检查备份数据是否成功,并发送邮件至管理员邮箱7) 由于备份服务器空间有限,需要删除超过180天的备份数据,但每周六的备份数据需要永久保留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 rsyncrsync-3.0.6-12.el6.x86_64 【添加rsync用户,用来管理本地目录】[root@backup ~]# useradd rsync -s /sbin/nologin -M[root@backup ~]# id rsyncuid=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 = 200timeout = 300pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.log#log file = /rsync/rsyncd.log[backup]path = /backup/ignore errorsread only = falselist = false hosts allow = 172.16.1.0/24hosts deny = 0.0.0.0/32auth users = rsync_backupsecrets 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 :873COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMErsync 1201 root 4u IPv4 10536 0t0 TCP :rsync (LISTEN)rsync 1201 root 5u IPv6 10537 0t0 TCP :rsync (LISTEN)[root@backup ~]# netstat -tunlp|grep 873tcp 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 --daemon2.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]# lsstu01 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.password2.2 在Web服务器上,实现打包、推送、删除、定时任务推送 【脚本】#!/bin/shIP=$(ifconfig eth1|awk -F "[ :]+" 'NR==2 {print$4}')Path=/backup/$IPif [ $(date +%w) -eq 0 ]thenTime=week$(date +%F-%w -d "-1day")elseTime=$(date +%F -d "-1day")fimkdir -p $Pathcd / &&\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 -f2.3 在备份服务器上实现发送邮件并删除180前的数据,并发送邮件
【脚本】#!/bin/shif [ $(date +%w) -eq 0 ]thenTime="week_$(date +%F-%w -d "-1day")"elseTime=$(date +%F -d "-1day")fifind /backup/ -type f -name "${Time}.log"|xargs md5sum -c >>/backup/${Time}_result.log mail -s "$Time bak result " xxxx@163.com</backup/${Time}_result.logfind /backup/ -type f -mtime +180 ! -name "_week-6" |xargs rm -f2.3.1 Web服务器上的定时任务[root@web01 ~]# crontab -l#backup 00 00 /bin/sh /server/scripts/backup.sh >/dev/null 2>&12.3.2 备份服务器上的定时任务[root@backup ~]# crontab -l#del00 00 * /bin/sh /server/scripts/del.sh >/dev/null 2>&12.3.3 邮件发送的配置编辑/etc/mail.rc文件然后在文件的最后一行加入下面的内容set from=xxxxx@163.com set smtp=pop.163.comset smtp-auth-user=xxxxxxxset smtp-auth-password=xxxxxxxset smtp-auth=login上面的各行的解释如下:from: 当别人收到邮件时显示的发件人。smtp: smtp服务器地址smtp-auth: 指定SMTP的认证方式。默认是LOGIN方式smtp-auth-user: 指定用户名smtp-auth-password: 指定密码(163是授权码)转载于:https://blog.51cto.com/lzhnb/2087328