第一章作业

某公司里有一台NFS服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他 机器上做一个周期性定时备份。要求如下:

每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利用rsync推送到备份服务器上)。

具体要求如下:

1)NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup;

2)NFS服务器站点目录假定为(/var/www/html);
3)NFS服务器脚本目录假定为(/server/scripts);
4)NFS服务器站点日志目录假定为(/app/logs);
5)NFS服务器个人配置文件目录路径(/etc/rc.d/rc.local);
6)NFS服务器定时任务文件路径为(/var/spool/cron/root);
7)将以上文件或目录打包(2-6条所示)推送到备份服务器backup ;
8)NFS服务器本地仅保留7天内的备份;
9)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱;
10)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。

作业答案:

环境搭建:

第一步:创建rsyncd.conf配置文件(在备份服务器上部署)
[root@backup backup]# cat /etc/rsyncd.conf
#rsync_config
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 =10.0.0.0/24
auth users = rsync
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup
[nfs]
comment = "nfs dir by rsync"
path = /nfs
第二步:创建备份目录管理用户
useradd -M -s /sbin/nologin rsync
第三步:创建备份目录并将所属组与所属改成rsync用户
mkdir /backup
chown -R rsync. /backup
第四步:创建认证文件,并将权限改成600
echo "rsync:123" >> /etc/rsync.password
chmod 600 /etc/rsync.password
第五步:启动rsync服务
rsync --deamon
部署客户端,创建认证文件
echo "oldboy123" >> /etc/rsync.password
chmod 600 /etc/rsync.password

作业解答:1-7题

存储服务器中使用脚本

[root@nfs01 backup]# cat /server/scripts/nfs.sh 
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
ip=`ifconfig eth0|awk -F '[: ]+' 'NR==2 {print $4}'`
#因为要备份昨天的数据,在日期这里就需要减1
date=`date -d "-1 day" +%F_%w`
name=$ip"_"$date
#如果文件不存在则创建
if [ ! -d /backup/  ];then
   mkdir /backup
fi
#备份到本机的/backup/文件中
cd / && tar zcf /backup/$name.tar.gz var/www/html server/scripts etc/rc.d/rc.local var/spool/cron/root app/logs
#将/backup/中的数据同步到rsync服务器中
rsync -az /backup/  rsync@172.16.1.41::backup --password-file=/etc/rsync.password
#删除七天前的数据
find /backup -type f -mtime +7 |xargs rm -f

将脚本添加到定时任务中

[root@nfs01 backup]# crontab -l
#backup to rsync backup 
00 00 * * *  /bin/sh /servser/scripts/nfs.sh >/dev/null 2>&1
[root@nfs01 backup]# 

rsync服务器中使用脚本(9-10题)

[root@backup backup]# cat /server/scripts/rsync.sh 
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#因备份的日期是昨天的,需要把日期减1天
date=`date -d "-1 day" +%F_%w`
name_file="10.0.0.31_"$date
#判断nfs推送过来的备份文件是否存在,如果存在则备份成功,进行发送邮件
if [ -f /backup/${name_file}.tar.gz ]; then
  echo "备份成功" > /backup/log.txt
  mail -s "${name_file}.tar.gz备份状态" 398565187@qq.com < /backup/log.txt
else
  echo "备份失败,文件不存在,请检查!" > /backup/log.txt
  mail -s "${name_file}.tar.gz备份状态" 398565187@qq.com < /backup/log.txt
fi
#删除180天以前的备份,并保留周六的数据
find /backup/ -type f -name "*[0-4,6].tar.gz" -mtime +180 |xargs rm -f

将脚本添加到定时任务中

[root@backup backup]# crontab -l
#Monitor backup status and send mail to administrator
05 00 * * * /bin/sh /server/scripts/rsync.sh >/dev/null 2>&1
 ps:因为nfs存储服务器的定时任务是晚上12点整才开始执行任务,在rsync服务器定时任务中,需要把时间推迟,看数据大小,我这边把定时任务推迟五分钟
原文地址:https://www.cnblogs.com/yjiu1990/p/10508722.html