SVN全量和增量备份脚本

来源:互联网 发布:windows无法检索有关 编辑:程序博客网 时间:2024/04/28 15:18

1)定义备份策略: 
备份频度:每周日进行一次全量备份,每周日到周六进行增量备份 
备份地点:备份存储路径到/opt/data_backup/svn_backup/ 
备份命名:全量备份文件名为:weekly_fully_backup.yymmdd,增量备份文件命名为:daily-incremental-backup.yymmdd 
备份时间:每晚02点开始  
2
)建立全量备份脚本: 

#!/bin/sh

DATE=$(date +%Y%m%d%H%M%S)                        #定义时间变量,用于文件名后缀

SVN_DIR=/svndata/bankeys                          #定义SVN库目录变量

SVN_BAK_DIR=/opt/data_backup/svn_backup/full      #定义备份文件存放目录变量

echo '0' > /tmp/svn_id                            #初始化版本号,全库备份一定是从0版本号开始

NUM1=$(cat /tmp/svn_id)                           #取初始化版本号

NUM2=$(svnlook youngest $SVN_DIR)                 #取当前最新的版本号

#开始备份

svnadmin dump $SVN_DIR -r $NUM1:$NUM2>  $SVN_BAK_DIR/svn_fullbak_$DATE

#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份使用

if [ $? -eq 0 ];

   then

   echo $NUM2 > /tmp/svn_id

   else

   echo "backupfail...."

fi
3)建立增量备份脚本: 
#!/bin/sh

DATE=$(date+%Y%m%d%H%M%S)                               #定义时间变量,用于文件名后缀

SVN_DIR=/svndata/bankeys                                 #定义SVN库目录变量

SVN_BAK_DIR=/opt/data_backup/svn_backup/incremental      #定义备份文件存放目录变量

NUM1=$(cat/tmp/svn_id)                                  #取初始化版本号

NUM2=$(svnlookyoungest $SVN_DIR)                        #取当前最新的版本号

#开始备份

svnadmindump $SVN_DIR -r $NUM2  --incremental > $SVN_BAK_DIR/svn_incrementalbak_$DATE

#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份使用

if [ $? -eq0 ];

   then

   echo $NUM2 > /tmp/svn_id

   else

   echo "backup fail...."

fi
4
)配置/etc/crontab文件 

 0 02 * * 1-6/usr/svn_backup/svn-backup-incremental.sh

 0 02 * * 0/usr/svn_backup/svn-backup-full.sh 
   
5
)恢复顺序从低版本逐个恢复到高版本;即,先恢复最近的一次完整备份 weekly_full_backup.071201(举例),然后恢复紧挨着这个文件的增量备份 daily_incremental_backup.071202,再恢复后一天的备份071203,依次类推。如下: 
user1>mkdir newrepos 
user1>svnadmin create newrepos 
user1>svnadmin load newrepos <weekly_full_backup.071201 
user1>svnadmin load newrepos <daily_incremental_backup.071202 
user1>svnadmin load newrepos <daily_incremental_backup.071203 

原创粉丝点击