2009-01-14 94 views
10

我們當前的備份過程每晚都會執行一次SVN HOTCOPY備份到另一臺計算機上的備份位置。 我能以某種方式從備份中恢復並保留所有修訂歷史記錄嗎? 或者我需要使用svn dump/load?如何從svn hotcopy備份中恢復

感謝, Chandrajeet

回答

24

「熱拷貝的svnadmin」 實際上將整個倉庫到另一個位置。該副本與原始存儲庫無法區分,實際上可以用作存儲庫本身。因此,您應該能夠將svnadmin hotcopy的結果複製回您的存儲庫位置,並擁有完全有效的已恢復存儲庫。

hotcopy對普通文件系統副本的優點是它尊重Subversion的鎖定機制。

+0

感謝您的回覆。如果損壞的存儲庫通過備份位置的乾淨存儲庫進行備份,我擔心這種情況。儘管我從週一到週五採取循環備份,但我擔心上述情況。什麼是svnadmin恢復?由於我的存儲庫位於一個fsfs系統上,我想「svnadmin recover」是沒有用的。問候, – chandrajeet 2009-01-14 21:50:11

+0

svnadmin恢復將從Subversion 1.5的fsfs中的一些錯誤中恢復。不過,我仍然建議在更永久的備份媒體上保留定期快照。 – MattK 2009-01-14 21:55:53

7

作爲日常備份的一部分,您可能需要運行svnadmin verify <REPOSITORY>

您既可以驗證原始或hotcopied。

絕對是在從備份恢復之前執行此操作。

1

我會做得更多,然後只需每晚運行一次hotcopy。我會使用「svnadmin dump」來創建修改歷史記錄到轉儲文件中,該文件可以恢復到正在運行的存儲庫中。

您應該將這些dumpfiles備份到磁帶或非現場磁盤,就像標準備份過程一樣。如果一個腐敗的存儲庫在被捕獲前幾天仍然存在(例如週末或假日),則可以返回到最後一個好文件。

1

可能是你想看看我的回答類似的問題: "Restore SVN backups from multiple files"

你也應該考慮爲恢復SVN-workingcopies策略: 如果你只是恢復了hotcopied(或傾倒)回購所有正在進行更高版本修改的workscopys將是無效的,開發人員必須再次退房。通常這需要更多的時間才能重新回到單純回收回購的軌道上。

轉儲問題是:它們非常耗時創建和回放。

此外,如果您使用鉤子腳本,它們將包含在您的hotcopy中,但它們不會在您的轉儲中。

那就是說我會推薦hotcopy和per-commit dump的組合