整体思路
获取实例目录
过滤实例目录
获取备份目录空间使用情况
是否执行空间清理
备份disk文件
#!bin/sh
str=$(ls /etc/nova/instances -1) #get instance directory(ID)
for i in $str;
do
leng=$(echo $i | awk '{ print length($0) }')
if [ $leng -gt 20 ];then
usage=$(df -Th | grep /etc/nova/instances | awk '{ print $6}') #get local storage usage
if [[ ${usage%%%} -gt 85 ]];then
echo "$(date "+%F %T") : NO MORE SPACE TO RUN BACKUP , RUN CLEAR SCRIPTS ..." >> ./schedule_back.log
sh /etc/nova/instances/backups/crontab/clear.sh
sleep 60s
sleep 60s
space=$(df -Th | grep /etc/nova/instances | awk '{ print $6}') #get new storage usage
if [ ${space%%%} -gt 85 ];then
echo "$(date "+%F %T") : SPACE IS ALMOST FULL , BACKUP WILL EXIT" >> ./schedule_back.log
exit
else
echo "$(date "+%F %T") : current backup storage usage is $space , backup will be continued..." >> ./schedule_back.log
fi
else
echo "$(date "+%F %T") : current backup storage usage is $usage , backup will be continued..." >> ./schedule_back.log
fi
echo "$(date "+%F %T") : $i/disk will be backup" >> ./schedule_back.log
cp /etc/nova/instances/$i/disk /etc/nova/instances/backups/"$i.$(date "+%F")"
sleep 60s
sleep 60s
sleep 60s
sleep 60s
else
echo "$(date "+%F %T") :$i is NOT an Instance Directory, SKIP" >> ./schedule_back.log
fi
done