Svn版本管理-學習篇


                                                    Svn版本管理-學習篇

                                                        

                                                                    Linux系統運維交流羣:476794643


  1. svn介紹

  2. 常見版本控制軟件

  3. svn常用的運行模式

  4. svn常用的訪問模式

  5. svn數據格式

  6. svn服務器搭建部署

  7. windows系統svn客戶端使用

  8. linux系統svn客戶端使用

  9. Svn鉤子腳本簡介

  10. Svn備份還原模擬演練


                                                                                        本文參考了網上資料

                                        

                                             svn 服務端搭建部署


svn介紹

        SubversionSVN)是一個開源的,跨平臺的版本控制系統,由CollabNet公司成立於2000年;Subversion作爲新一代的版本管理系統,以其目錄版本化、原子提交、版本化的元數據、更加有效的分支和標籤等特性,至今已被衆多的互聯網企業使用來管理網站、論壇的代碼文件;Subversion最獨特的地方,便是可以通過Apache的擴展模塊與ApacheHTTP服務相結合,實現更安全的特性與管理,其次用戶還可以通過HTTP協議去訪問版本庫,還可以通過SSL協議傳輸加密,保證數據的安全性;SubversionApache軟件基金會的發展的一個項目,並且也是一個豐富的開發人員和用戶社區的一部分。


常見的版本控制軟件

            1,CVS,逐漸被SVN取代,是CVX重寫版和改寫版

            2,SVN,Subversion

            3,Git,Git是一個開源的分佈式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件


svn的服務器常見有3種運行訪問方式

1、獨立服務器(例如:svn://IP/sadoc);
2、藉助apache(例如:http://IP/sadoc);
3、本地直接訪問(例如:file://IP/sadoc)


客戶端訪問方式

    Subversion可以通過多種方式訪問--本地磁盤訪問,或各種各樣不同的網絡協議,但一個版本庫的地址永遠都是一個URL,URL方案反映了訪問方法

file://直接版本訪問(本地磁盤或者網絡磁盤)
http://通過WebDAV協議訪問支持Subversion的Apache服務器
https://與http://相似,但是用的SSL加密
svn://通過未認證的TCP/IP自定義協議訪問svnserver服務器
svn+ssh://通過認證並加密的TCP/IP自定義協議訪問svnserver服務器



SVN數據格式

Subversion存儲版本數據方式2種:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點;那麼在創建Subversion版本控制倉庫的時候,可以指定存儲版本數據爲FSFS方式;



集中式代碼管理的核心是服務器,所有開發者在開始新一天的工作之前必須從服務器獲取代碼,然後開發,最後解決衝突,提交。所有的版本信息都放在服務器上。如果脫離了服務器,開發者基本上可以說是無法工作的。下面舉例說

明:開始新一天的工作    


1、從服務器下載項目組最新代碼

2、進入自己的分支,進行工作,每隔一小時向服務器上自己的分支持提交一次代碼(很多人都有這個習慣。因爲有時候自己對自己代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些代碼,就需要這樣做了)。

3、下班時間快到了,把自己的分支合併到服務器的主分支上,一天的工作完成,並反映給服務器

這就是經典的svn工作流程,從流程上看,有缺點,也有優點

缺點:

1、服務器壓太大,svn數據庫容量暴增

2、如果不能連接到服務器上,基本上不可以工作,看上面第二步,如果服務器不能連接上,就不能提交,還原,對比等

3、不適合開源開發(開發人數非常非常多,但是Google app engine就是用SVN的)。但一般集中式管理的有非常明確權限管理機制(例如分支訪問限制),可以實現分層管理,從而很好解決開發人數衆多問題


優點:

1、管理方便,邏輯明確,符合一般人思維習慣

2、易於管理,集中式服務器更能保證安全性

3、代碼一致性非常高

4、適合開發人數不多的項目開發

5、大部分軟件配置的大學教材都是使用svn和vss


1,yum安裝subversion

[root@localhost ~]# yum -y install subversion



2,檢測是否安裝成功

[root@localhost ~]# rpm -qa subversion
subversion-1.6.11-15.el6_7.x86_64



3,創建svn版本根目錄已經密碼權限目錄

[root@localhost ~]# mkdir -pv /web/svndata /web/svnpasswd
mkdir: 已創建目錄 "/web"
mkdir: 已創建目錄 "/web/svndata"
mkdir: 已創建目錄 "/web/svnpasswd"
[root@localhost ~]# ll /web/
總用量 8
drwxr-xr-x. 2 root root 4096 2月  23 22:16 svndata
drwxr-xr-x. 2 root root 4096 2月  23 22:16 svnpasswd



4,啓動服務,並檢測服務和端口是否開啓

[root@localhost ~]# svnserve -d -r /web/svndata
[root@localhost ~]# ps -ef  | grep svn | grep -v grep
root       1745      1  0 22:18 ?        00:00:00 svnserve -d -r /web/svndata
[root@localhost ~]# netstat -lntup | grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      1745/svnserve



5,創建一個新的subversion項目www.baidu.com,項目可以創建很多個

[root@localhost ~]# svnadmin create /web/svndata/www.baidu.com
[root@localhost ~]# ls -ld /web/svndata/www.baidu.com/
drwxr-xr-x. 6 root root 4096 2月  23 22:20 /web/svndata/www.baidu.com/



6,關於幫助,可以查看幫助

[root@localhost ~]# svnadmin help create
create: 用法: svnadmin create REPOS_PATH
在 REPOS_PATH 創建一個新的空版本庫。
有效選項: 
  --bdb-txn-nosync         : 在提交事務時禁用fsync [BDB]
  --bdb-log-keep           : 禁用自動刪除日誌文件 [BDB]
  --config-dir ARG         : 從目錄 ARG 讀取用戶配置文件
  --fs-type ARG            : 版本庫類型: “fsfs”(默認)或“bdb”
  --pre-1.4-compatible     : 使用與1.4之前版本兼容的格式
  --pre-1.5-compatible     : 使用 Subversion 1.5 之前版本的格式
  --pre-1.6-compatible     : 使用與 1.6 之前版本兼容的格式



7,修改配置文件

[root@localhost ~]# cd /web/svndata/www.baidu.com/
[root@localhost www.baidu.com]# ls
conf  db  format  hooks  locks  README.txt

**************************************************************************
dav目錄:是提供apache與mod_dav_svn使用的目錄,讓他們存儲內部數據,剛開始新建時此目錄沒有
db目錄:就是所有版本控制的數據存放文件
hooks目錄:放置hook腳本文件的目錄
locks目錄:用來放置subversion常見鎖定數據的目錄,用來追蹤存取文件庫的客戶端
format文件:是一個文本文件,裏面只放了一個整數。表示當前文件庫配置的版本號
conf目錄:是這個倉庫的配置文件(倉庫的用戶訪問賬號、權限等),也是我們要關注的配置文件

[root@localhost www.baidu.com]# cd conf/
[root@localhost conf]# ls
authz  passwd  svnserve.conf
**************************************************************************
authz          			#認證權限相關
passwd     			#用戶名和密碼
svnserve.conf         		#服務器配置文件

[root@localhost conf]# cp svnserve.conf svnserve.conf.2016-3-3bak
[root@localhost conf]# vi svnserve.conf
[root@localhost conf]# egrep "\-access|-db = " svnserve.conf
anon-access = read          	 #原先註釋掉了,匿名用戶可以讀,使用none的話就是匿名用戶不可以訪問
auth-access = write         	 #這幾行都要取消註釋,認證用戶可以寫,可以是read,write,none
password-db = /app/svnpasswd/passwd #密碼庫文件,默認使用的是同一目錄下的passwd文件作爲用戶密碼庫
authz-db = /app/svnpasswd/authz     #認證權限文件
realm = www.baidu.com   	 #登陸提示信息
注意:此配置文件的所有內容必須頂格,否則會報錯



8,定義用戶名密碼,權限配置

[root@localhost conf]# cp authz passwd /web/svnpasswd/
[root@localhost conf]# cd /web/svnpasswd/
[root@localhost svnpasswd]# ls
authz  passwd
[root@localhost svnpasswd]# vi passwd
[users]
# harry = harryssecret
# sally = sallyssecret
user1 = 123456
user2 = 123456
user3 = 123456

**************************************************************************
#末尾添加上面三行
#對於部分版本,前面的[users]是有#號的,如果有#號,一定要取消,否則只能使用匿名用戶登錄,客戶端登錄不會
出現登錄窗口或密碼提示,除非在配置文件將anon設置爲none,否則將返回一個錯誤
#這裏的密碼都是明文,沒有加密



8.1,配置權限

[root@localhost svnpasswd]# vi authz 
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
admin = user1,user2    #定義組,在[groups]下面添加  #用戶組格式 用戶組名 = 用戶1,用戶2
                       #一個組可以包含多個用戶,英文逗號間隔,用戶名必須是在passwd中存在的
[www.baidu.com:/]      #/表示我當前所在版本庫目錄
@admin = rw            #@admin表示這個組的權限,就是上面定義的組的成員
user3 = r              #用戶
* =                    #除了上面的有賦予權限成員之外,其他的成員都沒有權限

**************************************************************************
authz配置
用戶組格式,其中1個用戶組可以包含1個或多個用戶,用戶間用,隔開
[groups]
=,
[<項目庫>:/項目/目錄]
@<用戶組名> = <權限>
<用戶名> = <權限>
[/]表示根目錄 及以下,根目錄是svnserve啓動時指定的,
我們指定爲/app/svndata,[/]就是表示全部版庫設置權限
[repos:/]表示版本庫repos設置權限
[repos:/webtest]表示版本庫repos中的webtest項目設置權限
[repos:/webtest/zhanghe]表示版本庫對repos中的webtest項目的zhanghe目錄設置權限
權限主體可以是用戶組,用戶或*,用戶組在前面加@,*表示全部用戶
權限可以是w,r,wr和空,空表示沒有任何權限
authz中每個參數都要頂格寫,開頭不能空格
對於組,要以@開頭,用戶不需要@開頭



9,重新啓動svn服務

[root@localhost svnpasswd]# pkill svnserve
[root@localhost svnpasswd]# ps -ef | grep svn
root       1881   1679  0 23:30 pts/0    00:00:00 grep svn
[root@localhost svnpasswd]# svnserve -d -r /web/svndata/
[root@localhost svnpasswd]# netstat -tlunp | grep svn
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      1883/svnserve


                                               windows系統svn客戶端使用


                                                                      Linux系統運維交流羣:476794643


1,下載svn windows 客戶端

wKiom1bX2PbQ4QNqAAA6Jk47HM0277.png


2,安裝windows svn客戶端

wKiom1bX2iDQvEQ_AADMSfYJ9nI507.png


3,新建文件夾svn 右擊svn checkout設置設置取出數據

wKiom1bX2iCCDGvCAAB_EKlp-Hk177.jpg


4,設置svn地址

wKioL1bX2prTgGXdAADWvPv5UYI181.png


5,輸入賬號密碼

wKioL1bX2prAKstAAADqTH75BYA950.png


6,見到這個頁面就代表取出數據成功了

wKiom1bX2iGz8vBIAACZ7o4JBXo753.png


7,windows svn客戶端提交數據

wKioL1bX2pvybwXCAACCq79c8fs684.png


8,提交數據成功

wKiom1bX2iGzxg2dAABylPgK7KQ670.png


9,右擊 tortoisesvn 選中 repo-browser,隨時查看服務器上面的內容

wKioL1bX2pvx-WHeAACa5RdwXY8316.png


10,看到服務器上面的內容了

wKiom1bX2iLRpRfjAAB5tVkPtvk100.png



                                        linux系統 svn客戶端使用


                                                                     Linux系統運維交流羣:476794643


svn Linux客戶端使用幫助

1,安裝軟件

[root@localhost ~]# yum -y install subversion


2,本地取出svn數據

[root@localhost ~]# mkdir svn
[root@localhost ~]# svn co svn://192.168.42.128/www.baidu.com /root/svn/ --username=user1 --password=123456
-----------------------------------------------------------------------
注意!  你的密碼,對於認證域:
   <svn://192.168.42.128:3690> Welcome SVN server
只能明文保存在磁盤上!  如果可能的話,請考慮配置你的系統,讓 Subversion
可以保存加密後的密碼。請參閱文檔以獲得詳細信息。
你可以通過在“/root/.subversion/servers”中設置選項“store-plaintext-passwords”爲“yes”或“no”,
來避免再次出現此警告。
-----------------------------------------------------------------------
保存未加密的密碼(yes/no)?yes
A    /root/svn/index.php.txt
取出版本 1。
[root@localhost ~]# svn co svn://192.168.42.128/www.baidu.com /root/svn/ --username=user1 --password=123456
A    /root/svn/zabbix.txt
取出版本 2。
[root@localhost ~]# ls svn/
index.php.txt  zabbix.txt

###################################

2.1,解決 UTF-8  中文取出失敗

[root@localhost ~]# export LC_CTYPE="en_US.UTF-8"
[root@localhost ~]# export LC_ALL=


3,Linux客戶端查看svn文件列表

[root@localhost ~]# svn ls svn://192.168.42.128/www.baidu.com --username=user1 --password=123456
index.php.txt
zabbix.txt
新建文本文檔.txt

4,Linux客戶端查看svn文件內容

[root@localhost ~]# svn cat svn://192.168.42.128/www.baidu.com/zabbix.txt
111111111111111111111111
222222222222222222222222


5,Linux客戶端提交數據

[root@localhost svn]# touch {a..e}#一定要本地創建好
[root@localhost svn]# ls
a  b  c  d  e  index.php.txt  zabbix.txt  新建文本文檔.txt
[root@localhost svn]# svn add a b c d e
A         a
A         b
A         c
A         d
A         e
[root@localhost svn]# svn ci -m "1"
增加           a
增加           b
增加           c
增加           d
增加           e
傳輸文件數據.....
提交後的版本爲 5。

6,文件夾創建提交

[root@localhost svn]# mkdir zhanghe
[root@localhost svn]# svn add zhanghe
A         zhanghe
[root@localhost svn]# svn ci -m "2"
增加           zhanghe
提交後的版本爲 6。


7,Linux客戶端數據導入

[root@localhost ~]# mkdir svn1
[root@localhost ~]# mkdir -p svn1/trunk svn1/branch svn1/tag
[root@localhost ~]# svn import svn1/ svn://192.168.42.128/www.baidu.com -m "4"
增加           svn1/trunk
增加           svn1/tag
增加           svn1/branch
提交後的版本爲 7。


8,svn 把主幹拷貝成分之

[root@localhost ~]# svn copy svn://192.168.42.128/www.baidu.com/trunk svn://192.168.42.128/www.baidu.com/branch/branch_cms_160303 -m "5" --username=user1 --password=123456
提交後的版本爲 8。





                                            Svn鉤子腳本簡介

                            

                                                                     Linux系統運維交流羣:476794643    


鉤子腳本的具體寫法就是操作系統shell腳本程序寫法,請根據自己SVN所在的操作系統和shell程序進行相應的開發。


鉤子腳本就是被某些版本庫事件觸發的程序,例如創建新版本或修改未被版本控制的屬性。每個鉤子都能掌管足夠的信息來了解發生了什麼事件,操作對象是什麼以及觸發事件用戶的賬號。根據鉤子的輸出或者返回狀態,鉤子程序能夠以某種方式控制該動作繼續執行,停止或者掛起。


svn的hooks模版功能介紹
start-commit提交前觸發事務
pre-commit提交完成前觸發事務
post-commit提交完成時觸發事務
pre-revprop-change版本屬性修改前觸發事務
post-revprop-change版本屬性修改後觸發事務
post-commit

在提交完成,成功創建版本之後執行該鉤子,提交已經完成,不可更改,因此腳本返回值被忽略

post-lock

對文件進行加鎖操作之後執行該腳本

post-revprop-change

在修改revision屬性之後,執行該腳本。因爲修改稿已經完成,不可更改,因此本腳本的返回值被飯忽略

(不過實際上的實現似乎是該腳本的正確執行與否影響屬性修改)

post-unlock

對文件進行解鎖操作之後執行該腳本

pre-commit

在Subversion transaction完畢之後,在提交之前,執行該腳本

pre-revprop-change

在修改revision屬性之前,執行該腳本

start-commit

對客戶端還沒有向服務器提交數據之前,即還沒有建立Subversion transaction(縮寫txn)之前,執行該腳本


腳本post-commit 演示


腳本用處:當svn更新時候,自動同步到tmp下面去,適合網站使用

REPOS="$1"
REV="$2"
export LC_CTYPE="en_US.UTF-8"
export LC_ALL
LOGPATH="/web/log"
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
#update content from svn
SVN=/usr/bin/svn
$SVN update --username user1 --password 123456 /data/www
if [ $? -eq 0 ]
then
 /usr/bin/rsync -az --delete /data/www /tmp
fi




腳本pre-commit 演示

腳本用處:限制上傳文件大小,文件後綴

REPOS="$1"
TXN="$2"
#此處更改大小限制,這裏是5M
MAX_SIZE=5242880
#此處增加限制文件後比綴名
FILTER='\.(zip|rar|o|obj|tar|gz)$'
#Make sure that the log message contains some test
SVNLOOK=/usr/bin/svnlook
#LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | wc -c`
if [ "$LOGMSG" -lt 9 ];
then
        echo -e "nLog message cann't be empty! you must input more than 8 chars as comment!." 1>&2
exit 1
fi
files=$($SVNLOOK changed -t $TXN $REPOS |cut -d "" -f 4-)
#echo "$files">&2
#echo "$r">&2
#exit 1
rc=0
echo "$files" | while read f;
do
#check file type
filesize=`$SVNLOOK cat -t "$TXN" "$REPOS" "$f" | wc -c `
if [ "filezie" -gt "$MAX_SIZE" ];
then
        echo "File $f is too large(must <+$MAX_SIZE)B" >&2
        exit 1
fi
done
#All checks passed,so allow the commit.
if [ $? -eq 1 ];
then
exit 1
else
exit 0
fi



2016年03月03日15:52:53

數據備份還原    待更新。。。。。。。。。


            腳本實現svn備份與恢復,基於rsync實現遠程備份,並記錄日誌


                                                                 Linux系統運維交流羣:476794643


svn服務器:192.168.42.128

備份服務器:192.168.42.129

在svn服務器進行本地備份


1.全量備份

# vim  /data/shell/backup_svn.sh
 
#!/bin/sh
#
PATH=$PATH:/usr/local/subversion/bin
export PATH
#定義時間變量,用於文件名後綴
DATE=$(date +%F) 
  
#定義SVN庫目錄變量
SVN_DIR_docs=/web/svndata/www.baidu.com               
SVN_DIR_tools=/web/svndata/
#SVN_DIR_ALL=/web/svndata/   #沒有試過能不能把兩個庫一起備份下來      
  
#定義備份文件存放目錄變量
SVN_BAK_DIR=/data/bak/
  
#初始化版本號,全庫備份一定是從0版本號開始
echo '0' > /data/svnnum/docs_svn_id
echo '0' > /data/svnnum/tools_svn_id 
  
#取初始化版本號
NUM_docs1=$(cat /data/svnnum/docs_svn_id)
NUM_tools1=$(cat /data/svnnum/tools_svn_id)
  
#取當前最新的版本號
NUM_docs2=$(svnlook youngest $SVN_DIR_docs)
NUM_tools2=$(svnlook youngest $SVN_DIR_tools)
  
#備份用戶認證以及授權文件
 \cp  /web/svnpassword {authz,passwd} /data/bak/.
  
#開始備份
#判斷備份是否成功,若成功,則記錄當前最新的版本號到臨時文件中,用於下次增量備份使用
All_Backup_svn(){
  
        svnadmin dump $SVN_DIR_docs  -r $NUM_docs1:$NUM_docs2  --incremental >  $SVN_BAK_DIR/docs_bak_$DATE
        if [ $? -eq 0 ];
            then
            echo $NUM_docs2 > /data/svnnum/docs_svn_id
            else
            echo "$(date +%F) docs backup fail...." >> /tmp/svnback.log
        fi
        svnadmin dump $SVN_DIR_tools  -r $NUM_tools1:$NUM_tools2  --incremental >  $SVN_BAK_DIR/tools_bak_$DATE
        if [ $? -eq 0 ];
            then
            echo $NUM_tools2 > /data/svnnum/tools_svn_id
            else
            echo "$(date +%F) tools backup fail...." >> /tmp/svnback.log
        fi
}
  
All_Backup_svn

       

2.增量備份

# vim  /data/shell/day_backup_svn.sh
 
#!/bin/bash
#
PATH=$PATH:/usr/local/subversion/bin
export PATH
#定義時間變量,用於文件名後綴
DATE=$(date +%F) 
  
#定義SVN庫目錄變量
SVN_DIR_docs=/web/svndata/www.baidu.com                
SVN_DIR_tools=/web/svndata/www.google.com
#SVN_DIR_ALL=/web/svndata/   #沒有試過能不能把兩個庫一起備份下來  
  
#定義備份文件存放目錄變量
SVN_BAK_DIR=/data/bak/
  
#取初始化版本號
NUM_docs1=$(cat /data/svnnum/docs_svn_id)
NUM_tools1=$(cat /data/svnnum/tools_svn_id)
  
#取當前最新的版本號
NUM_docs2=$(svnlook youngest $SVN_DIR_docs)
NUM_tools2=$(svnlook youngest $SVN_DIR_tools)
  
#開始備份
#判斷備份是否成功,若成功,則記錄當前最新的版本號到臨時文件中,用於下次增量備份使用
Day_Backup_svn(){
         
        if [ $NUM_docs1 -lt $NUM_docs2 ];
            then
  
            svnadmin dump $SVN_DIR_docs  -r $NUM_docs1:$NUM_docs2  --incremental >  $SVN_BAK_DIR/docs_bak_$DATE
             
            if [ $? -eq 0 ];
                then
                echo $NUM_docs2 > /data/svnnum/docs_svn_id
                else
                echo "$(date +%F) docs backup fail...." >> /tmp/svnback.log
            fi
        fi
         
     
        if [ $NUM_tools1 -lt $NUM_tools2 ];
            then
            svnadmin dump $SVN_DIR_tools  -r $NUM_tools1:$NUM_tools2  --incremental >  $SVN_BAK_DIR/tools_bak_$DATE
            if [ $? -eq 0 ];
                then
                echo $NUM_tools2 > /data/svnnum/tools_svn_id
                else
                echo "$(date +%F) tools backup fail...." >> /tmp/svnback.log
            fi
        fi
}
 
Day_Backup_svn


3.添加定時任務

# crontab -e
#start
0 2 * * *  /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1
#每週日做一次全量備份
59 23 *  * 0   /data/shell/backup_svn.sh &>/dev/null
#對svn進行增量備份
59 23 *  * 1-6  /data/shell/day_backup_svn.sh


4.配置rsync服務器:

# rpm -qa rsync(如果安裝  yum install   rsync -y)
rsync-3.0.6-12.el6.x86_64
 
# yum install xinetd -y
 
啓用rsync
# vim /etc/xinetd.d/rsync 
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
提供rsync配置文件
 
# vim  /etc/rsyncd.conf
#rsync --daemon  --config=/etc/rsyncd.conf
#全局選項 
 
strict modes =yes 
# 是否檢查口令文件的權限 
 
port = 873
# 默認端口873 
 
log file = /var/log/rsyncd.log
# 日誌記錄文件 
 
pid file = /var/run/rsyncd.pid
# 運行進程的ID寫到哪裏 
 
[svn]
 
path = /data/bak
 
# 這裏是認證的模塊名,在client端需要指定 
 
max connections = 0
# 客戶端最大連接數,默認0(沒限制) 
 
uid = root
# 指定該模塊傳輸文件時守護進程應該具有的uid 
 
gid = root
# 指定該模塊傳輸文件時守護進程應該具有的gid 
 
ignore errors
# 可以忽略一些無關的IO錯誤 
 
read only = yes
# no客戶端可上傳文件,yes只讀 
 
write only = no
# no客戶端可下載文件,yes不能下載 
 
hosts allow = * 
# 充許任何主機連接 
 
#hosts deny = 10.5.3.1
# 禁止指定的主機連接 
 
auth users = root
# 認證的用戶名,如果沒有這行,則表明是匿名 
 
secrets file = /etc/backserver.pas
# 指定認證口令文件位置


5.提供認證文件,且權限必須爲600

# vim /etc/backserver.pas 
root:123456
 
# chmod 600 /etc/backserver.pas


6.重啓服務

# /etc/init.d/xinetd restart


 7.同步備份至192.168.42.129

提供認證文件,且權限必須爲600

# vim /etc/backserver.pas 
123456
 
# chmod 600 /etc/backserver.pas
 
# mkdir -p  /data/bak/svn
 
# vim /home/bak/backup_svn.sh 
#!/bin/bash
#備份svn倉庫
/usr/bin/rsync  -vzrtopg --progress --delete  [email protected]::svn /data/bak/svn --password-file=/etc/backserver.pas

 

8.添加定時任務

# crontab -e
#Start
0 2 * * *  /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1
#備份svn
35 01 * * * /home/backup_svn.sh  &> /dev/null
#End


9. svn恢復測試

# mkdir docs 
# svnadmin create newrepos 
# svnadmin load newrepos < docs_bak_Mon
# svnadmin load newrepos < docs_bak_Tue 
# svnadmin load newrepos < docs_bak_Wed
# svnadmin load newrepos < docs_bak_Thu
# svnadmin load newrepos < docs_bak_Fri
# svnadmin load newrepos < docs_bak_Sun


                                     Linux系統運維交流羣:476794643

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章