unix中自动管理日志文件的shell
时间:2006-08-25 来源:netop5
由于应用系统每天晚上计划执行oracle数据库的exp备份,导致unix系统空间不够,但又需要这些历史的备份文件,为此我今天做了一个shell程序,主要是将一个月前的数据备份文件移动到其他机器上面,从而确保系统空间冗余。另外,通过find命令也可以实现上述功能,这里不做进一步的讨论。
shell文件建好了后,然后做个crontab计划,这样就可以定时自动执行shell,达到系统自动管理空间的目的。同时,这个shell程序也可以针对每天生成的日志文件来进行管理。
cd /oradatabak
YEAR=`date '+%EY'`
MONTH=`date '+%m'`
DAY=`date '+%d'`
if [ $MONTH -eq 1 ]
then
YEAR=`expr $YEAR - 1`
MONTH=12
else
MONTH=`expr $MONTH - 1`
MONTH=`echo "$MONTH"|awk '{if (length($1)==1) $1=0$1;printf "%s\n",$1}'`
fi
#get last day of pre month
LASTDAY=`echo \`cal $MONTH $YEAR\`|tail -n1|awk '{print $NF}'`
if [ $DAY -lt 1 ] || [ $DAY -gt $LASTDAY ]
then
echo " Pre Month have not this day! \n "
else
DAY=`echo "$DAY"|awk '{if (length($1)==1) $1=0$1;printf "%s\n",$1}'`
# echo $YEAR
# echo $MONTH
# echo $DAY
# echo $LASTDAY LASTDATE=$YEAR$MONTH$DAY
file=exp$LASTDATE.dmp
file1=exp$LASTDATE.dmp.Z
file2=hostname2:/u/backup/$file1
# echo $file
# echo $file1
# echo $file2
rcp $file1 $file2
rm $file1
echo "Move File "$file1" To "$file2" Successful !"
fi
MONTH=`date '+%m'`
DAY=`date '+%d'`
if [ $MONTH -eq 1 ]
then
YEAR=`expr $YEAR - 1`
MONTH=12
else
MONTH=`expr $MONTH - 1`
MONTH=`echo "$MONTH"|awk '{if (length($1)==1) $1=0$1;printf "%s\n",$1}'`
fi
#get last day of pre month
LASTDAY=`echo \`cal $MONTH $YEAR\`|tail -n1|awk '{print $NF}'`
if [ $DAY -lt 1 ] || [ $DAY -gt $LASTDAY ]
then
echo " Pre Month have not this day! \n "
else
DAY=`echo "$DAY"|awk '{if (length($1)==1) $1=0$1;printf "%s\n",$1}'`
# echo $YEAR
# echo $MONTH
# echo $DAY
# echo $LASTDAY LASTDATE=$YEAR$MONTH$DAY
file=exp$LASTDATE.dmp
file1=exp$LASTDATE.dmp.Z
file2=hostname2:/u/backup/$file1
# echo $file
# echo $file1
# echo $file2
rcp $file1 $file2
rm $file1
echo "Move File "$file1" To "$file2" Successful !"
fi
相关阅读 更多 +