下面具體描述備份的方法:
===============svn
一、svnadmin dump備份工具
------------------------
這是subversion官方推薦的備份方式。工具
1)定義備份策略:
備份頻度:每週六進行一次全量備份,每週日到週五進行增量備份
備份地點:備份存儲路徑到/home/backup/svn/
備份命名:全量備份文件名爲:weekly_fully_backup.yymmdd,增量備份文件命名爲:daily-incremental-backup.yymmdd
備份時間:每晚21點開始
備份檢查:每個月末進行svnadmin load恢復試驗。
2)創建全量備份腳本:
在~/下創建一個perl腳本文件,名爲weekly_backup.pl,執行全量備份,並壓縮備份文件,代碼以下(本代碼只針對一個庫的備份,若是是多個庫請作相應改動):
#!/usr/bin/perl -w
my $svn_repos="/home/svn/repos/project1";
my $backup_dir="/home/backup/svn/";
my $next_backup_file = "weekly_fully_backup.".`date +%Y%m%d`;crontab
$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;ip
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`;rem
3)創建增量備份腳本:
在全量備份的基礎上,進行增量備份:在~/下創建一個perl腳本文件,名爲:daily_backup.pl,代碼以下:cmd
#!/usr/bin/perl -w
my $svn_repos="/home/svn/repos/project1";
my $backup_dir="/home/backup/svn/";
my $next_backup_file = "daily_incremental_backup.".`date +%Y%m%d`;it
open(IN,"$backup_dir/last_backed_up");
$previous_youngest = <IN>;
chomp $previous_youngest;
close IN;io
$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;
if ($youngest eq $previous_youngest)
{
print "No new revisions to backup./n";
exit 0;
}
my $first_rev = $previous_youngest + 1;
print "Backing up revisions $youngest .../n";
my $svnadmin_cmd = "svnadmin dump --incremental --revision $first_rev:$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`;
4)配置/etc/crontab文件
配置 /etc/crontab 文件,指定每週六執行weekly_backup.pl,指定週一到週五執行daily_backup.pl;
具體步驟俺就不囉嗦了.
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
....ast
若是備份時採用了gzip進行壓縮,恢復時可將解壓縮和恢復命令合併,簡單寫成:
user1>zcat weekly_full_backup.071201 | svnadmin load newrepos
user1>zcat daily_incremental_backup.071202 | svnadmin load newrepos基礎