2012-02-16 92 views
1

我正在管理一個服務器,Alpha(運行Debian和Fusion Forge(基於Web的項目管理系統)),大約200GB的svn倉庫(大約200個不同的倉庫)。我試圖將數據的每日備份管理到文件服務器Beta(運行Windows,它有增量副本),然後處理所有其他備份。現在的問題是我最終每天都傳輸200GB,而且我沒有充分利用rsync。Rsyncing全天日常備份

現在兩個完整的每日備份存儲在Alpha上,這些備份每天晚上都由Fusion Forge生成,因此備份目錄看起來像這樣。

$ ls alpha-backup 
cvsroot-tmp-2012-02-15.tar.bz2 etc-tmp-2012-02-15.tar.bz2   svn-repositories-2012-02-15 
cvsroot-tmp-2012-02-16.tar.bz2 etc-tmp-2012-02-16.tar.bz2   svn-repositories-2012-02-16 
db-alpha-tmp-2012-02-15.tar mailinglist-tmp-2012-02-15.tar.bz2 uploads-tmp-2012-02-15.tar.bz2 
db-alpha-tmp-2012-02-16.tar mailinglist-tmp-2012-02-16.tar.bz2 uploads-tmp-2012-02-16.tar.bz2 

每晚都創建一個新的備份,並刪除舊的備份。我一直試圖避免修改這個過程,因爲它不是我的代碼。

每個svn-repositories目錄包含大約200GB,其餘的比較小。因此,創建svn-repositories-2012-02-16時,它與備份服務器上的svn-repositories-2012-02-15非常接近,但rsync似乎無法找到只能複製更改的圖形。我已經嘗試了幾次rsync上的參數變體,但很少成功,這是目前使用的。

rsync -aq -P --inplace --delete --fuzzy /alpha-backup/. beta::alpha 

無論如何,我正在尋找一些東西來解決這個問題,所以我的備份不會永遠持續下去。

+0

我會設置一個slave svn存儲庫作爲備份。此外,gzip的可以產生rsync的友好檔案(不知道爲的bZIP) – bobah 2012-02-16 19:58:57

+0

謝謝,我居然變成SVN檔案爲這個確切原因的壓縮和解的,我並沒有意識到,gzip的有特點,我不得不啓用爲其他文件。 – lotu 2012-02-16 21:39:15

回答

2

我會使用svnsync命令。

  1. 創建一個空倉庫:
    svnadmin create c:\svn\backup_repo

  2. 啓用屬性格式的變化:
    echo exit 0 >> c:\svn\backup_repo\hooks\pre-revprop-change.bat

  3. 初始化備份:
    svnsync init c:\svn\backup_repo <path_to_alpha_repo>

  4. 開始同步:
    svnsync sync file:///c:/svn/backup_repo

運行同步的第一時間(即步驟4)它可能需要相當長的一段時間。但是,一旦與HEAD同步,您就可以快速安排工作,定期運行svnsync sync file:///c:/svn/backup_repo,並且備份始終處於最新狀態。它將是原始SVN存儲庫的完全複製品,包括相同的修訂版本ID,日誌註釋等。

+0

謝謝,他們有兩個問題。首先我有一堆存儲庫,所以我必須爲每個存儲庫執行此操作,並在添加新腳本時創建腳本以添加新腳本。此外,我不認爲這會同步所有的元數據,如用戶權限,頻繁更改:(。 – lotu 2012-02-16 22:18:03