SVN主從備份
兩套環境:192.168.67.63(主SVN)
192.168.67.60(從SVN)
1.主環境上已經裝好SVN並且存在數據倉庫/home/svndata在從環境上,新建一/home/svndata_bak倉庫:
[root@bsdi home]# svnadmin create /home/svndata_bak [root@bsdi home]# ll 總用量 0 drwx------. 3 bhd bhd 78 4月 11 2018 bhd drwxr-xr-x. 6 root root 86 12月 3 13:59 svndata_bak [root@bsdi home]# cd svndata_bak/ [root@bsdi svndata_bak]# ll 總用量 8 drwxr-xr-x. 2 root root 54 12月 3 13:59 conf drwxr-sr-x. 6 root root 233 12月 3 13:59 db -r--r--r--. 1 root root 2 12月 3 13:59 format drwxr-xr-x. 2 root root 231 12月 3 13:59 hooks drwxr-xr-x. 2 root root 41 12月 3 13:59 locks -rw-r--r--. 1 root root 229 12月 3 13:59 README.txt
2.把主環境上的conf下的authz、passwd、svnserve.conf拷貝覆蓋掉從環境上的conf下的文件,覆蓋之后注意修改svnserve.conf中的路徑設置,並且主從環境上的svnserve.conf中的anon-access都要設置成none:
anon-access = none auth-access = write password-db = passwd authz-db = authz realm = /home/svndata_bak
3.修改hooks文件夾下的pre-revprop-change(注意主從環境上的都要做同樣的修改):
[root@bsdi hooks]# vim pre-revprop-change.tmpl #!/bin/sh exit 0 [root@bsdi hooks]# mv pre-revprop-change.tmpl pre-revprop-change [root@bsdi hooks]# chmod +x pre-revprop-change
4.設置完成之后啟動svn,這樣就得到一個和主環境上相同用戶和權限的從SVN庫:
[root@bsdi hooks]# svnserve -d -r /home/svndata_bak --listen-port 2396
5.接下來在主環境上操作,如下這一條命令是初始化版本:
[root@bsdi hooks]# svnsync init svn://192.168.67.60:2396 svn://192.168.67.63:2396 --username limang --password pwd123!@ --no-auth-cache 復制版本 0 的屬性。 [root@bsdi hooks]#
6.同步數據:
[root@bsdi hooks]# svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password pwd123!@ 已提交版本 1。 復制版本 1 的屬性。 傳輸文件數據...................................................................................................................................................................... 已提交版本 2。 復制版本 2 的屬性。 傳輸文件數據. 已提交版本 3。 復制版本 3 的屬性。 [root@vasoyn hooks]#
此時主從數據已經成功同步,在svn瀏覽器中訪問從環境,發現已存在一個一摸一樣的倉庫。
7.接下來在主環境上使用hooks下的post-commit腳本進行SVN實時同步:
修改post-commit如下:
[root@bsdi hooks]# vim post-commit.tmpl #!/bin/sh svnsync sync --non-interactive svn://192.168.67.60:2396 --username limang --password pwd123!@ [root@bsdi hooks]# mv post-commit.tmpl post-commit [root@bsdi hooks]# chmod +x post-commit
此時當主環境上SVN有代碼提交時,會觸發這個腳本並執行里面的命令實現主從同步。
8.設置SVN開機啟動:
SVN主從同步的前提是,主從SVN可以互相訪問,所以需要將主從SVN都設置開機啟動:
修改/etc/rc.d/rc.local並設置該文件為可執行文件:
[root@bsdi hooks]# vim /etc/rc.d/rc.local #!/bin/bash svnserve -d -r /home/svndata --listen-port 2396 [root@bsdi hooks]# chmod +x /etc/rc.d/rc.local [root@bsdi hooks]#