SVN全量和增量备份脚本

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  

user1>svnadmin load newrepos  
user1>svnadmin load newrepos  

你可能感兴趣的:(svn,备份脚本,linux)