svn備份、還原、遷移一條龍方案

備份篇

前言

此處要備份的庫名以test爲例服務器

目的

當svn服務器發生災難級故障時,咱們能夠利用備份文件對公司資產:svn代碼進行恢復ide

面臨的現狀

整個svn備份文件很是大,若是每次進行都全量備份;將消耗很是多的硬盤資源。svn

解決方案

使用全量備份+增量備份的方案;對svn代碼進行異地備份
每月1號進行一個完整備份,其餘時候進行差別備份工具

一:全量備份步驟

  • 1.使用svnadmin dump 倉庫路徑 > dumpfile日誌

    svnadmin dump /data/svn/test > /data/backup/svn/test_dumpfile
  • 2.使用命令獲取倉庫的提交版本數,爲後面的增量作好準備
    svnlook youngest 倉庫路徑;如
    [root@localhost svn]# svnlook youngest /data/svn/test/
    73988

    備註:73988是當前倉庫的版本提交數量code

二:增量備份步驟

  • 1.備份差別的svn版本數
    上1次全量備份的svn版本數有:73881;如今總有73988個版本數量,中間的差別爲:73882-73988(在全量備份的基礎上+1)
    svnadmin dump /data/svn/test -r 73882:73988 --incremental > /data/backup/svn/test_dumpfile_73882-73988

備份策略總結

凌晨1點開始備份,先使用svnlook youngest獲取版本數量,而後再全量的壓縮備份。將全量備份的版本號記錄好,下次增量備份的時候,能夠用該版本號+1進行差別備份資源

還原數據篇

背景

上面咱們經過svn的官方備份工具svnadmin dump,對svn倉庫已經進行了備份;如今咱們對數據進行還原開發

操做環境

  • 1.準備好svn備份數據:通常含有全量文件和增量備份文件
  • 2.準備好一臺機器,上面搭建好svn便可

全量還原步驟

  • 1.執行導入命令

    將全量備份的數據,導入到新機器搭建好的svn上

    svnadmin load /data/svn/test/ < /data/backup/svn/test_dumpfile
  • 2.檢查svn版本數;看到已是還原成功了
    [root@localhost svn]# svnlook youngest /data/svn/test/
    73881
  • 3.確認svn的提交日誌內容,是否有問題
  • 4.和svn的使用同窗,確認有無問題

增量還原步驟

  • 1.增量備份文件爲:/data/backup/svn/test_dumpfile_73881-73988
svnadmin load /data/svn/test/ < /data/backup/svn/test_dumpfile_73881-73988
  • 2.當咱們看到Committed new rev 73989 (loaded from original rev 73988),表示還原成功
  • 3.再次使用svnlook查看提交的版本數
[root@localhost svn]# svnlook youngest /data/svn/test/
73988

遷移方案總結:

先利用全量備份,再利用增量備份進行還原,最後和客戶端開發同窗協助確認下:還原的svn數據是否能夠被正常使用。rem

遷移篇

前言

svn://192.168.1.1/test中包含了公司全部的項目A、項目B、項目C(除客戶端代碼外);不便於直接使用it

方法:

爲了更好的區別項目,將不一樣的項目使用不一樣的版本庫;從test中獨立出來的子文件夾有:

  • 項目A
  • 項目B
  • 項目C

遷移原則:

儘量對項目開發的影響較小;

遷移目的機器

192.168.1.2;這臺機器做爲svn還原使用

遷移步驟:

1.先利用全量還原好數據
2.使用增量備份文件,對差別部分進行還原便可(通常是1天的數據)

先作好全量的還原

1.在項目二大羣中發一個通知:svn版本庫週末進行維護,週末暫停使用

2.使用完整備份的文件,過濾出須要的文件夾

svndumpfilter include 項目A < test_bak_0-90769 > 項目A_dumpfile
svndumpfilter include 項目B < test_bak_0-90769 > 項目B_dumpfile
# 若是包含了多個文件夾,能夠用空格+文件夾名,表明多個目錄
svndumpfilter include 項目C 17_項目C < test_bak_0-90769 > 項目C_dumpfile

3.在192.168.1.2新建好版本庫

svnadmin create /data/svn/項目A
svnadmin create /data/svn/項目B
svnadmin create /data/svn/項目C

4.作好受權
準備好在用的人員信息,寫到新版本庫的受權文件中
5.使用步驟1的文件進行數據恢復

svnadmin load /data/svn/項目A < 項目A_dumpfile
svnadmin load /data/svn/項目B < 項目B_dumpfile
svnadmin load /data/svn/項目C < 項目C_dumpfile

經過增量備份,進行差別還原

1.準備差別文件
2.將差別部分進行還原
3.驗證差別部分

6.驗證沒有問題以後。將舊機器上面的文件隱藏移動到一個再也不使用的文件夾中;7/14天后確認沒有影響後刪除

相關文章
相關標籤/搜索