不過就在搬家前 發生了一些小插曲 相當不幸的小插曲
舊的Server上所有硬碟一次壞光 大概是Power壞了還是主機晶片啥壞了的 anyway
雖然在NAS上有備份 不過不是同步(同步的備份跟著一起壞了) 跟最新版有著一天的差距
還是要想辦法把壞的的資料弄出來 因此花了幾天的時間來掃描磁碟 救資料等...很累
另外 還有一台QNAP的 TS-209 雖然速度不快 不過空間倒是很大 拿來放著還蠻可惜
所以就當作主Server 的同步備份Server 才不會發生一次硬碟全壞光就資料統統消失了= =
因此有兩台主機(一台Ubuntu 另一台NAS也是Linux)做SVN Service
那還要一台電腦做非同步的資料備份 定期壓縮傳上去
首先 在Ubuntu上安裝很簡單 在Package Manager上找到SVN 等他裝完就OK
接下來測試一下有沒有裝好 隨便建立一個新的檔案庫
svnadmin create /SVNRoot
svnserve -d --listen-host=0.0.0.0 --listen-port=<請輸入> -r /SVNRoot
這裡 /SVNRoot是新檔案庫的位置 請依照需求建立
像我已經有舊的檔案庫 所以只要把舊的檔案庫cp過去就好
然後就在Client端測試一下連線是不是OK 方法就請參考這一篇
最後就是要設定開機自動啟動 Ubuntu可以在 /etc/init.d/下 建立shell script如下
vim /etc/init.d/svn
//進入編輯畫面之後按i再輸入下方script (此Script感謝龍頭大大教導)
#!/bin/sh
# description: Svnserve auto start-stop script. by bignose
# chkconfig: - 20 80
#
SVN_HOME=/usr/bin
SVN_OWNER=root
if [ ! -f "$SVN_HOME/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
'start')
su - $SVN_OWNER -c "$SVN_HOME/svnserve -d --listen-host=0.0.0.0 --listen-port=X -r /SVNRoot -T"
;;
'stop')
su - $SVN_OWNER -c "$SVN_HOME/killall svnserve"
;;
'restart')
su - $SVN_OWNER -c "$SVN_HOME/killall svnserve"
su - $SVN_OWNER -c "$SVN_HOME/svnserve -d --listen-host=0.0.0.0 --listen-port=X -r /SVNRoot -T"
;;
esac
//記得輸入想要的port之後 按ESC跟:wq存檔離開
//最後給他執行權限
chmod 755 /etc/init.d/svn
最後重開機看看是不是還能連線囉...
接下來設定另一台電腦 QNAP的 TS-209 由於是ARM的CPU
本身也沒有提供套件安裝的功能 稍微麻煩一點 不過要達成也很簡單
官網的討論群當中已經有很詳細的介紹
首先 要安裝ipkg來方便我們安裝各種軟體 詳細設定請參考此討論串
cd /share/Public
wget ftp://csdread:[email protected]/NAS/Optware-Ipkg/optware-tsx09.tar.gz
tar zxvf optware-tsx09.tar.gz
//安裝
./optware-bootstrap-qnap-tsx09.sh optware_chroot.tar.gz
//反安裝
./optware-bootstrap-qnap-tsx09.sh uninstall
//如果有遇到某西軟體不能跑 需要再加上
chroot /share/HDA_DATA/optware /bin/bash
等他下載完所有套件 安裝完之後 以後要在這台機器上安裝軟體就方便啦
要知道所有ipkg的套件有哪些可以 可以輸入
ipkg list | more
接下來要安裝 SVN 只需要輸入
ipkg install svn
接下來跟上面一下 建立一個檔案庫 並且設定自動啟動
不過TS-209有一些保護的功能 東西不能隨便放 這裡選擇在/share/Public下
想知道更詳細去爬爬討論區的文吧
svnadmin create /share/Public/Repository/
svnserve -d --listen-host=0.0.0.0 --listen-port=X -r /share/Public/Repository/
最後 就是加到自動啟動的shell script中
mount /dev/mtdblock5 -t ext2 /tmp/config
cd /tmp/config
cat "svnserve -d --listen-host=0.0.0.0 --listen-port=X -r /share/Public/Repository/" >> autorun.sh
cd /
umount /tmp/config
重開機測試看看吧
安裝完SVN 加下來就是設定同步備份的部份 這已經介紹過了
所有詳細的步驟 可以參考 "SVN檔案庫備份與同步"來進行設定
基本上大同小異 頂多是從Windows的batch語法 換成Linux的shell
另外要記得 要給shell script的檔案加上 執行的權限
最後是非同步備份的部份 我寫了一個shell script來實做
最後把他加到crontab裡面讓他自動執行...
那原理跟之前提到的備份SVN的文章一樣
先把需要的部份hotcopy出來 使用hotcopy來取代dump的原因是
hotcopy才能保留一些檔案庫的設定檔 比dump的資訊更完整
接下來把所有東西壓縮起來 我使用的是7z 如果不想用他可以用基本的tar跟gz,biz2等等
最後用lftp把他傳到另一台電腦上保存
完整的 script file可以在這裡下載
解開後修改上方一些基本的參數之後就可以執行
除非你想更換7z到tar,gz... 更換lftp到ncftp等
那要傳進去的參數 目前就是到底要備份哪些東西
如果傳進一個目錄 會去遞迴搜尋哪些是檔案庫
如果傳進一個檔案 就會依照檔案每一行所指定的檔案庫來做
所以我在crontab內的作法 就會依照檔案庫的更新頻率的不同 來指定備份頻率 例如
00 06 1,7,13,19,25 * * root /root/Backup.sh /root/freqlist
00 05 4,16,28 * * root /root/Backup.sh /root/list
00 04 10,22 * * root /root/Backup.sh /SVNRoot
最後重新啟動cron或是重開機就ok啦
Script的部份 有空會在改改 把所有要設定的東西都寫成參數傳進去
就不用在修改Script本身 讓他更有彈性 不過目前可以用就好
希望這次設定可以稱久一點 讓我畢業之後還可以繼續用下去XD
這是我第一次在Linux的系統上架Server 也是第一次寫Shell Script
如果有任何錯誤或是不妥的 歡迎馬上告知
0 comments:
張貼留言