服务器备份机制(脚本)来源: 发布时间:星期一, 2008年10月20日 浏览:14次 评论:0
上司安排我搞一套备份的机制.预防服务器挂了...
其中一台是linux,要写shell 脚本实现备份...备份主要是程序代码,svn配置,版本库和数据库;但备份存在占用空间问题,例如变化少的时候,如果依然照常备份,会造成空间浪费,所以需要分时段备份全部,平时增量备份;以节省空间.固脚本需要判断文件变化的情况,抽取出有改变的文件作为增量备份. 大致方案的想法是:每个月全局备份一次,不分项目.每天凌晨空闲时运行增量备份. ================================================= shell脚本1(文件增量备份): #author : sky | 2008-04-29 project=$1 date=`date +%Y%m%d` filename=$project"_"$date svn=$filename"_svn" code=$filename"_code" sql=$filename"_sql" # Check Backup Directory exists. if [ ! -e "/datahistory/incr/$filename" ] then mkdir /datahistory/incr/$filename fi #svn config file find /svn/$project/ -type f -mtime -1 -print>/tmp/$svn.txt #source code find /webshoot/$project/ -type f -mtime -1 -print>/tmp/$code.txt #tar tar -cz -T /tmp/$svn.txt -f /datahistory/incr/$filename/$svn.tar.gz tar -cz -T /tmp/$code.txt -f /datahistory/incr/$filename/$code.tar.gz #ftp cd /datahistory/incr/$filename/ ftp -i -v -n <<! open 192.168.16.254 21 user xxxx xxxx binary put $svn.tar.gz put $code.tar.gz bye ! #delete #rm -rf /tmp/$svn.txt #rm -rf /tmp/$code.txt ================================================ 脚本2(数据库备份): #!/bin/sh # mysql data backup script # use mysqldump --help,get more detail. # project=$1 BakDir=/datahistory/mysql/$project LogFile=/datahistory/mysql/$project/mysqlbak.log if [ ! -e "$BakDir" ] then mkdir $BakDir fi if [ ! -e "$BakDir/daily" ] then mkdir "$BakDir/daily" fi DATE=`date +%Y%m%d` echo " " >> $LogFile echo " " >> $LogFile echo "-------------------------------------------" >> $LogFile echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile echo "--------------------------" >> $LogFile cd $BakDir DumpFile=$project"_"$DATE.sql GZDumpFile=$project"_"$DATE.sql.tgz mysqldump --quick $project > $DumpFile -h 192.168.16.243 -u xxx -pxxx echo "Dump Done" >> $LogFile tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1 echo "[$GZDumpFile]Backup Success!" >> $LogFile #ftp ftp -i -v -n <<! open 192.168.16.254 21 user xxxx xxxx binary put $GZDumpFile bye ! rm -f $DumpFile #delete previous daily backup files:.........,.......,........... cd $BakDir/daily rm -f * cd $BakDir echo "Backup Done!" echo "please Check $BakDir Directory!" echo "copy it to your local disk or ftp to somewhere !!!" ls -al $BakDir ========================================= [ft=#FFFFFF,,]此 0
相关文章
读者评论
发表评论 |