我是SVN的新手,我想知道在Windows環境中備份存儲庫有哪些方法可用?SVN存儲庫備份策略
回答
您可以使用類似(Linux的):
svnadmin dump repositorypath | gzip > backupname.svn.gz
因爲Windows不支持gzip它僅僅是:
svnadmin dump repositorypath > backupname.svn
我不確定,但是確實有些工具比如7-zip能夠壓縮STDIN中的數據,這意味着你也可以在Windows上使用第一種風格。 – nickf 2009-04-26 12:06:53
我只是在看我自己和一個評論從文檔http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.backup是你'會得到一個非常大的svnadmin轉儲輸出,除非你使用--deltas選項。 – 2009-10-14 20:22:26
而且Windows不支持gzip,從unxutils網頁http://unxutils.sourceforge.net/ – 2009-10-14 20:24:08
我喜歡將整個repo目錄複製到備份位置。這樣,如果發生什麼事情,您可以將目錄複製回來,並立即準備好。
只要確保保留權限,如果需要的話。通常,這只是Linux機器上的一個問題。
這不是如果有人在複製操作中進行提交,則確實很安全 - 即使只有4人可以訪問回購站並且很少使用回收站,我也遇到過這種情況。請參閱Duncan關於使用hotcopy的答案。 – nickf 2009-04-26 12:08:45
但是,如果您完全獨立工作,那麼我認爲這是備份回購的安全方法?我爲我的個人項目使用顛覆,這就是我目前正在做的事情。 – 2011-02-04 02:45:58
您可以創建一個存儲庫備份(轉儲 )與
svnadmin dump
。然後,您可以使用
svnadmin load
導入它。
在SVNBook詳細參考: "Repository data migration using svnadmin"
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
此子命令,使您的存儲庫的完全「熱」備份,包括所有的鉤子,配置文件和當然還有數據庫文件。
在Subversion網站上有一個hotbackup.py腳本,這對於自動備份非常方便。
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
如果您使用的是FSFS版本庫格式(默認),那麼您可以複製庫本身進行備份。使用較舊的BerkleyDB系統時,存儲庫不是平臺獨立的,您通常需要使用svnadmin轉儲。
svnbook documentation topic for backup建議使用svnadmin hotcopy
命令,因爲它將處理諸如正在使用的文件等問題。
我們使用的svnadmin hotcopy但,如:
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
按the book:
你可以在任何時候運行這個命令,對資料庫的安全拷貝,不管其它進程正在使用存儲庫。
你當然可以ZIP(最好是7-Zip)備份副本。恕我直言,這是最直接的備份選項:在發生災難的情況下,除了將其解壓縮到位之外,幾乎沒有什麼可做的。
我使用svnsync,它將遠程服務器設置爲鏡像/從屬。我們有一臺服務器在兩週前停止運行,我可以很輕鬆地將主機切換到主要位置(只需將從屬存儲庫上的UUID重置爲原始位置)。
另一個好處是,同步可以由中間人來運行,而不是作爲任一服務器上的任務運行。我有一個客戶端讓兩個VPN在它們之間同步一個存儲庫。
正如其他人所說,從Subversion團隊hot-backup.py擁有超過只是普通svnadmin hotcopy
我一個python腳本運行的計劃任務蜘蛛爲我的機器上的所有存儲庫,以及一些不錯的功能使用hotbackup來保存幾天的hotcopies(腐敗的偏執狂)和一個遠程機器上的svnadmin svndump
。到目前爲止恢復非常簡單。
這裏是一個Perl腳本,將:
- 備份回購
- 通過SCP
- 檢索備份
- 從備份創建一個測試版本庫將其複製到另一臺服務器
- 做一個測試結賬
- 通過電子郵件與任何錯誤(通過cron)
腳本:
my $svn_repo = "/var/svn";
my $bkup_dir = "/home/backup_user/backups";
my $bkup_file = "my_backup-";
my $tmp_dir = "/home/backup_user/tmp";
my $bkup_svr = "my.backup.com";
my $bkup_svr_login = "backup";
$bkup_file = $bkup_file . `date +%Y%m%d-%H%M`;
chomp $bkup_file;
my $youngest = `svnlook youngest $svn_repo`;
chomp $youngest;
my $dump_command = "svnadmin -q dump $svn_repo > $bkup_dir/$bkup_file ";
print "\nDumping Subversion repo $svn_repo to $bkup_file...\n";
print `$dump_command`;
print "Backing up through revision $youngest... \n";
print "\nCompressing dump file...\n";
print `gzip -9 $bkup_dir/$bkup_file\n`;
chomp $bkup_file;
my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz";
print "\nCreated $zipped_file\n";
print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`;
print "\n$bkup_file.gz transfered to $bkup_svr\n";
#Test Backup
print "\n---------------------------------------\n";
print "Testing Backup";
print "\n---------------------------------------\n";
print "Downloading $bkup_file.gz from $bkup_svr\n";
print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`;
print "Unzipping $bkup_file.gz\n";
print `gunzip $tmp_dir/$bkup_file.gz`;
print "Creating test repository\n";
print `svnadmin create $tmp_dir/test_repo`;
print "Loading repository\n";
print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`;
print "Checking out repository\n";
print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`;
print "Cleaning up\n";
print `rm -f $tmp_dir/$bkup_file`;
print `rm -rf $tmp_dir/test_checkout`;
print `rm -rf $tmp_dir/test_repo`;
Script source and more details about the rational for this type of backup.
日常和完整的備份解決方案只需使用SVN backup scripts here。
svnbackup了在谷歌代碼,一個.NET控制檯應用程序。
有兩種主要的方法來備份svn服務器,第一種是hotcopy,它會創建你的存儲庫文件的副本,這種方法的主要問題是它保存有關底層文件系統的數據,所以你可能會有一些嘗試在另一臺svn服務器或另一臺機器上重新發布這種備份的困難。 還有另一種類型的備份稱爲轉儲,這不會備份保存底層文件系統的任何信息和飲用水,以立足tigiris.org顛覆任何類型的SVN服務器。
你可以使用svnadmin工具中的備份工具(這是能夠做到即時拷貝和轉儲)從命令提示符,這個控制檯駐留在同一目錄下你的svn服務器的生活,或者你可以谷歌SVN備份工具。
我的建議是,你可以進行兩種備份並將它們從辦公室轉移到您的電子郵件帳戶,亞馬遜s3服務,ftp或azure服務,這樣您將擁有安全備份,而無需託管svn服務器在你辦公室外的某處。
我編我遵循的把我的項目的遠程SVN 存儲庫的備份目的的步驟。
install svk (http://svk.bestpractical.com/view/SVKWin32)
install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download)
svk mirror //local <remote repository URL>
svk sync //local
這需要時間,並說,這是從獲取存儲庫中的日誌。它在C:\Documents and Settings\nverma\.svk\local
內創建一組文件。
要更新最新的一組從遠程一個變化的這個本地倉庫,剛剛從時間運行前面的命令時。
現在你可以用你的本地庫(/home/user/.svk/local
在這個例子中)玩,就好像它是一個正常的SVN倉庫!
用這種方法唯一的問題是,本地倉庫與通過在遠程倉庫的實際修訂修訂增量創建。正如有人寫道:
svk miror命令在剛剛創建的存儲庫中生成一個提交。因此,與遠程公共存儲庫相比,後續同步創建的所有提交將修訂號增加1。
但是,這對我來說是好的,因爲我只想要一次備份遠程存儲庫,沒有別的。
驗證:
要驗證,使用SVN客戶端與本地存儲庫這樣的:
svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/" <local-dir-path-to-checkout-onto>
此命令然後去從本地庫中檢出最新版本。最後它說Checked out revision N
。此N
比在遠程存儲庫中發現(由於上面提到的問題)的實際修改一個。
爲了驗證svk是否帶來了所有的歷史記錄,SVN結帳使用-r
和2,10,50等等,在各種舊版本中運行。然後確認<local-dir-path-to-checkout-onto>
中的文件來自該修訂版。
最後,壓縮的目錄C:/Documents and Settings\nverma/.svk/local/
和一些地方保存拉鍊。定期繼續這樣做。
@echo off
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2%
echo Performing Backup
md "\\HOME\Development\Backups\SubVersion\%folder%"
svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn
這是批處理文件我已經運行執行我的備份
基本上它是安全的,如果svn的服務器停止複製的存儲庫文件夾。 (來源:https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D)
所以,如果你被允許停止服務器,做到這一點,剛纔複製的資源庫,無論是與一些腳本或備份工具。 Cobian備份很好地適合在這裏,因爲它可以停止和自動啓動的服務,並且它可以做增量備份,所以你只備份最近更改過的存儲庫的部分(有用的,如果存儲庫是大,你是備份到遠程位置)。
實施例:
- 安裝Cobian備份
添加備份任務:
集源到存儲庫文件夾(例如
C:\Repositories\
),添加預備份事件
"STOP_SERVICE"
的VisualSVN,根據需要添加備份後的事件,
"START_SERVICE"
的VisualSVN,設置其他選項。 我們設置了增量備份,包括刪除舊備份,備份計劃,目的地,壓縮包括。檔案分割等
利潤!
這裏的GUI的Windows工具,讓本地和遠程Subversion版本庫的轉儲:
https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html
工具介紹說:
這只是工具,允許做的轉儲備份本地和遠程Subversion存儲庫。該軟件的工作方式與「svnadmin」相同,但不是GUI前端。而是直接使用Subversion庫來允許在獨立模式下創建轉儲,而無需任何其他附加工具。
希望這有助於...
1.1 SVN(顛覆)存儲庫中創建轉儲
svnadmin dump /path/to/reponame > /path/to/reponame.dump
真實的例子
svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump
1.2 Gzip已創建轉儲
gzip -9 /path/to/reponame.dump
實例
gzip -9 /backups/testrepo.dump
1。3 SVN轉儲和gzip用一行代碼
svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz
真實的例子轉儲
svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz
如何備份(轉儲)和恢復(裝載)SVN(顛覆)庫在Linux上。
編號:svn subversion backup andrestore
- 1. SVN存儲庫的Windows備份
- 2. 從備份中恢復SVN存儲庫
- 3. 恢復SVN存儲庫備份
- 4. SVN - 從備份恢復存儲庫
- 5. 視覺SVN多個存儲庫備份
- 6. Heroku數據庫備份策略?
- 7. svn備份庫
- 8. SQL Server存檔策略(非備份)
- 9. 將svn備份到另一個svn存儲庫
- 10. django的備份策略
- 11. 源代碼備份策略
- 12. Neo4j增量備份策略
- 13. MySQL的備份策略
- 14. Kafka Streams狀態存儲備份主題分區策略
- 15. 備份appengine數據存儲的推薦策略
- 16. 如何備份13 GB SVN存儲庫?轉儲是100+ GB
- 17. SVN連續轉儲/備份
- 18. 如何備份託管的SVN存儲庫?
- 19. xcopy是否用於複製(備份)svn存儲庫?
- 20. 從(非標準)備份恢復SVN存儲庫
- 21. 將svn存儲庫備份到網絡共享的腳本
- 22. 將本地svn存儲庫備份到Google Drive
- 23. 從手動備份中恢復SVN存儲庫
- 24. 如何從備份中恢復SVN存儲庫?
- 25. MySQL:備份策略 - 主或從?
- 26. WCF保持活躍和備份策略
- 27. SQLite備份和恢復策略
- 28. Joomla 1.5站點備份策略
- 29. Google Compute Engine虛擬機備份策略
- 30. 適用於AWS的MongoDB備份策略
VisualSVN服務器的Windows包括了時間表內置功能來備份和驗證SVN倉庫:https://www.visualsvn.com/server/features/backup/ – bahrep 2017-03-23 18:45:18