2007年8月30日

Subversion 的備份機制

根據 Subversion中文站论坛 這篇討論(Subversion备份)的說明,Subversion 有三種備份方式:完全備份、增量備份、異地檔案庫同步。

為了同時備份到多個地方,個人決定選擇增量備份方式作為工作專案的備份機制。流程大致如下:

  1. 透過 hooks 記錄每次 commit 的檔案庫名稱(也就是路徑)及版號,這個記錄檔暫稱為異動記錄檔。
  2. 每日檢查前一日異動記錄檔中是否包含異動情形,如果有的話就使用 svnadmin dump 指令以 增量記錄方式匯出成增量記錄檔。
  3. 對增量記錄檔計算 md5 後,連同增量記錄檔本身壓縮成 .bz2 檔備用。
  4. 將 bz2 檔透過 sftp 方式上傳到遠端 Subversion 伺服器上。
  5. 透過執行遠端指定命令稿將 bz2 檔還原成增量記錄檔及 md5 記錄檔,檢查檔案是否有所異常。
  6. 在遠端 Subversion 系統中將沒有異常的增量記錄檔透過 svnadmin load 方式匯入相應檔案庫中,結束遠端呼叫。
  7. 將 bz2 檔 mail 至某 EMAIL 帳號(是的,我只想到 GMAIL)中。
  8. 如果允許的話還可以順便將 bz2 檔案複製到他處,做為第三份備份。
  9. 刪除 bz2 檔,結束當日備份作業。
以上,是目前考慮的作法。