根据需求编写一个日志定时备份并发送至存储服务器的脚本
定期把三天前的日志文件备份,打包发送至日志备份服务器指定目录(修改对应路径拿走即用)
vim qingli.sh
#!/bin/bash
#定义星期几
week=$(date |awk 'NR==1{print $4}')
num=${week}
#日志源目录
log="/data/linux/logs"
#定义备份目录
bakup="/opt/logbak"
#定义时间变量
DATE=$(date)
#备份操作记录日志
BAKLOG="/data/bakup.log"
#case判断语法
case "$num" in
"星期一")
find ${log} -type f -mtime +3 -exec mv {} ${bakup} \;
echo ""$DATE"备份4天前日志" >> $BAKLOG
;;
"星期二")
echo ""$DATE"未做备份操作" >> $BAKLOG
;;
"星期三")
find ${log} -type f -mtime +3 -exec mv {} ${bakup} \;
echo ""$DATE"备份4天前日志" >> $BAKLOG
;;
"星期四")
echo ""$DATE"未做备份操作" >> $BAKLOG
;;
"星期五")
find ${log} -type f -mtime +3 -exec mv {} ${bakup} \;
echo ""$DATE"备份4天前日志" >> $BAKLOG
;;
"星期六")
echo ""$DATE"未做备份操作" >> $BAKLOG
;;
"星期日")
find ${log} -type f -mtime +3 -exec mv {} ${bakup} \;
echo ""$DATE"备份四天前日志" >> $BAKLOG
;;
esac
#定义备份日志包名称以日期命名
log_time=login-①`date +"%Y-%m-%d".tar`
#此判断是为了发送备份文件到指定服务器以及清理备份文件防止占用过多磁盘
#
if [ $num = "星期日" ];then
cd $bakup && tar czf $log_time * && scp $log_time root@192.168.197.142:/home > /dev/null 2>&1 && rm -rf $bakup/*
echo ""$DATE"将备份日志发送至oss服务器" >> $BAKLOG
else
echo ""$DATE"今天未做发送操作" >> $BAKLOG
fi
编辑完成后给脚本提权
chmod 777 qingli.sh
然后加入计划任务
crontab -e
01 0 * * * bash /data/qingli.sh
看下执行效果