专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »项目管理 » 服务器备份机制(脚本) »正文

服务器备份机制(脚本)

来源: 发布时间:星期一, 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条 分0页

发表评论

  • 昵称:
  • 内容: