svn備份指令碼

2021-07-27 03:05:00 字數 1519 閱讀 3624

svn備份一般採用三種方式:

1)svnadmin dump 

2)svnadmin hotcopy 

3)svnsync. 

注意,svn備份不宜採用普通的檔案拷貝方式(除非你備份的時候將庫暫停),如copy命令、rsync命令。 

筆者曾經用 rsync命令來做增量和全量備份,在季度備份檢查審計中,發現備份出來的庫大部分都不可用,因此最好是用svn本身提供的功能來進行備份。 

優缺點分析

**********==== 

第一種svnadmin dump是官方推薦的備份方式,優點是比較靈活,可以全量備份也可以增量備份,並提供了版本恢復機制。 

缺點是:如果版本比較大,如版本數增長到數萬、數十萬,那麼dump的過程將非常慢;備份耗時,恢復更耗時;不利於快速進行災難恢復。 

個人建議在版本數比較小的情況下使用這種備份方式。 

第二種svnadmin hotcopy原設計目的估計不是用來備份的,只能進行全量拷貝,不能進行增量備份; 

優點是:備份過程較快,災難恢復也很快;如果備份機上已經搭建了svn服務,甚至不需要恢復,只需要進行簡單配置即可切換到備份庫上工作。 

缺點是:比較耗費硬碟,需要有較大的硬碟支援(俺的備份機有1tb空間,呵呵)。 

第三種svnsync實際上是製作2個映象庫,當乙個壞了的時候,可以迅速切換到另乙個。不過,必須svn1.4版本以上才支援這個功能。 

優點是:當製作成2個映象庫的時候起到雙機實時備份的作用; 

缺點是:當作為2個映象庫使用時,沒辦法做到「想完全拋棄今天的修改恢復到昨晚的樣子」;而當作為普通備份機制每日備份時,操作又較前2種方法麻煩。

#!/usr/bin/perl -w 

my $svn_repos="/opt/svn/repos"; 

my $backup_dir="/opt/backup/svn/"; 

my $next_backup_file = "weekly_fully_backup.".`date +%y%m%d`; 

$youngest=`svnlook youngest $svn_repos`; 

chomp $youngest; 

print "backing up to revision $youngest\n"; 

my $svnadmin_cmd="svnadmin dump --revision 0:$youngest $svn_repos >$backup_dir/$next_backup_file"; 

`$svnadmin_cmd`; 

open(log,">$backup_dir/last_backed_up"); #記錄備份的版本號 

print log $youngest; 

close log; 

#如果想節約空間,則再執行下面的壓縮指令碼 

print "compressing dump file...\n"; 

print `gzip -g $backup_dir/$next_backup_file`; 

本文出自 「ghost」 部落格,請務必保留此出處

SVN備份指令碼

bin bash maxdays 7 備份保留最大天數 time date y m d h m s svnpath data1 svn ser 定義倉庫repos路徑 bakdir data1 svnback 定義備份主目錄 baksubdir 定義全備路徑 baklog log 定義備份日誌 d ...

svn定時備份指令碼

參考 以下指令碼可直接拿去用,待完善 刪除定時備份 echo off 關閉回顯 設定標題 title svnbackup remset variable svn home svn程式的安裝路徑,指定到bin目錄上一級。如果路徑有空格,請用 set svn home c program files v...

SVN定時備份bat指令碼

文章目錄 隱藏 echo off 關閉回顯 設定標題 rem 設定變數 set svn backup root d svnbackup 獲取當前系統日期和時間用來建立目錄,格式 年月日 時分秒毫秒。如 20131129 16275274 set time dir date 4 date 5,2 da...