天天看點

svn主從備份以及開機啟動腳本

A主從備份:

原由:從我入職公司到現在svn伺服器就一台,年前我就有想法搞一台備的,不然到時候機器挂了資料丢了就尴尬了。

昨天搞了一整天,網上的各種教學,改來改去,遇到一個坑:同步隻能同步版本,不能同步資料。

晚上回家又想了下,沒想通。今天早上來重新對了下各個配置。發現隻有一個沒有改:svnserve.conf裡

anon-access = read 改為了anon-access = none就沒問題了。

附上操作:

svn主搭建忽略。

主svn:svn://192.168.52.102/test1

從svn:svn://192.168.52.103/test1

大部分都是從上操作:

從上操作:

[建svn庫:

mkdir /home/svn/test1

svnadmin create /home/svn/test1

svn主從備份以及開機啟動腳本

把主上的conf下的檔案拷貝到備上的conf下:簡單配置如下:

[root@localhost conf]# cat authz | grep ^[^#]

[aliases]

[groups]

admin=lipeng

dev=lipengdev

[/]

@admin=rw

@dev=rw

[repository:/]

@admin=rw

@dev=rw

[root@localhost conf]# cat passwd | grep ^[^#]

[users]

lipeng = Lp19910807

lipengdev = lp19910807

[root@localhost conf]# cat svnserve.conf | grep ^[^#]

[general]

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

[sasl]

修改hooks下的pre-revprop-change

全部清空,寫入

#!/bin/sh

exit 0

給執行權限:

chmod 755 pre-revprop-change

先把從的svn起起來  svnserve -d -r /home/svn   下圖中是伺服器啟動的,下面會貼上服務腳本。

svn主從備份以及開機啟動腳本

從上開始初始化:

svnsync init svn://192.168.52.103/test1 svn://192.168.52.102/test1 --username lipeng --password Lp19910807 --no-auth-cache

svn主從備份以及開機啟動腳本

從上直接同步:

svnsync sync --non-interactive svn://192.168.52.103/test1 --username lipeng --password Lp19910807

svn主從備份以及開機啟動腳本

上圖就遇到了開頭說的問題,隻同步了版本屬性,沒有同步資料。需要修改

svnserve.conf裡

anon-access = read 改為了anon-access = none就沒問題了。(主從上都要改為none 切記)

改完貌似需要重新初始化。這邊直接删掉重建了庫。

再次同步問題解決:

svn主從備份以及開機啟動腳本

]###[]内都是從上操作的。

主上操作:

修改hooks的post-commit,使用者送出代碼就會自動備份到從。

修改hooks上的post-commit(初始内容直接清空,寫入以下内容即可)

chmod +x post-commit

#!/bin/sh

svnsync sync --non-interactive svn://192.168.52.103/test1 --username lipeng --password Lp19910807

 下面驗證:

在例外一台機器上驗證:

checkout主的test1:

svn主從備份以及開機啟動腳本

在别的目錄checkout從的test1

svn主從備份以及開機啟動腳本

主的test1裡面增删改查,并送出。

[root@svn opt]# cd test1/

[root@svn test1]# ls

asdadasd.txt sakjdhkjashdhjk.txt test1_2_3_4_5_6_7_8.txt test1_2_3_4_5_6.txt test1_2_3_4.txt test1_2.txt ysb

askjhdjkha.txt test11111111.txt test1_2_3_4_5_6_7.txt test1_2_3_4_5.txt test1_2_3.txt test1.txt

[root@svn test1]# touch aaaa.txt

[root@svn test1]# svn add aaaa.txt

A aaaa.txt

[root@svn test1]# svn commit -m "add aaaa.txt"

增加 aaaa.txt

傳輸檔案資料.

送出後的版本為 18。

進到從的那個庫裡,直接update看結果:成功。

svn主從備份以及開機啟動腳本

 B:svn啟動服務腳本:

vim /etc/init.d/svnboot

chmod +x /etc/init.d/svnboot

chkconfig --add svnboot

chkconfig svnboot on

腳本内容如下:

#!/bin/bash

# chkconfig: 2345 85 15

# description: svn server

SVN_HOME=/home/svn

SVN_SERVER=/usr/bin/svnserve

if [ ! -x $SVN_SERVER ]; then

echo "svnserver startup: cannot start"

exit

fi

case "$1" in

start)

echo "Starting svnserve…"

$SVN_SERVER -d -r $SVN_HOME

echo "Finished!"

;;

stop)

echo "Stoping svnserve…"

killall svnserve

echo "Finished!"

;;

restart)

$0 stop

$0 start

;;

*)

echo "Usage: svn { start | stop | restart } "

exit 1

esac

svn

繼續閱讀