|
发表于 2005-7-9 06:34:24
|
显示全部楼层
Post by sprite_gz
脚本如下:
#! /bin/sh
DAY=$(date +%y%m%d)
NOW=$(date +%Y-%m-%d-%H:%M:%S)
BACKUP_LOG=/var/log/backup.log
#User directory VAR
HK=huangkai
DENS=dens
DXF=dongxf
SPRITE=sprite
TEST=test
WJB=wangjb
ZZH=zengzh
#Delete old backup file.打包之前,要把目录下所有tar文件删除,
#避免重下面synthesize函数,把旧的集合包打进新的集合包里.
delete()
{
if [ -f /home/backup/*.tar ]
then
echo "----------------------------------------" >> $BACKUP_LOG
echo [$NOW] "Deletting old backup file." >> $BACKUP_LOG
/bin/rm -f `ls /home/backup|grep .tar`
else
echo "----------------------------------------"
echo [$NOW] "Directory is null."
if [ $? = 0 ]
then
echo [$NOW] "Delete old backup file is OK" >> $BACKUP_LOG
else
echo [$NOW] "Error with rm!" >> $BACKUP_LOG
exit1
fi
fi
}
#Backup,把目标目录分别打包,并以目录的名字命名.
backup()
{
if [ ! -f /home/backup/*.tar ]
then
echo [$NOW] "Backup is begin." >> $BACKUP_LOG
tar zcvf /home/backup/"$HK"_"$DAY".tar /home/$HK
tar zcvf /home/backup/"$DENS"_"$DAY".tar /home/$DENS
tar zcvf /home/backup/"$DXF"_"$DAY".tar /home/$DXF
tar zcvf /home/backup/"$SPRITE"_"$DAY".tar /home/$SPRITE
tar zcvf /home/backup/"$TEST"_"$DAY".tar /home/$TEST
tar zcvf /home/backup/"$WJB"_"$DAY".tar /home/$WJB
tar zcvf /home/backup/"$ZZH"_"$DAY".tar /home/$ZZH
if [ $? = 0 ]
then
echo [$NOW] "Backup is accomplish" >> $BACKUP_LOG
echo "----------------------------------------" >> $BACKUP_LOG
else
echo [$NOW] "Error with tar!" >> $BACKUP_LOG
fi
fi
}
#Backup accomplish log
backup_log()
{
if [ -f /home/backup/$DAY.tar ]
then
echo [$NOW] "Backup is accomplish" >> $BACKUP_LOG
echo "----------------------------------------" >> $BACKUP_LOG
fi
}
#把散的包集合成一个集合包里面,方便传送.
synthesize()
{
tar zcvf /home/backup/$DAY.tar /home/backup/*.tar && rm -f `ls /home/backup|grep .tar | grep -v "^$DAY.tar"`
}
delete
if [ $? = 0 ];then
backup
if [ $? = 0 ];then
synthesize
fi
fi
期望实现如下:
1.检查/home/backup目录下是否有tar包,如果有,删除.
2.把目标打包成tar文件,存放在/home/backup目录下
3.把/home/backup目录下的所有tar包,打包成一个集合tar包.完成后,把其他散的包删除.此时/home/backup目录下只剩一个今天日期为名字的集合tar包.
手动执行,没发现问题.
但如果放在crontab里面,定时执行的话,delete函数好像就失灵了.
synthesize函数打包的$DAY.tar就删不掉..
导致/backup目录下有050704.tar(7月4号的集合包)与050705.tar(今天新打的包)
在debug mode运行, #!/bin/bash -xv, 然后将整个code输出定向到log文件。
- #!/bin/bash -xv
- (
- ....
- ....
- ) 2>&1 >/tmp/something.log
复制代码
crob运行后,查看log文件。 |
|