linux svn服務(wù)器搭建、客戶端操作、備份與恢復(fù)
Subversion(SVN)是一個(gè)開(kāi)源的版本控制系統(tǒng),管理著隨時(shí)間改變的數(shù)據(jù)。這些數(shù)據(jù)放置在一個(gè)中央資料檔案庫(kù)中,這個(gè)檔案庫(kù)很像一個(gè)普通的文件服務(wù)器,它會(huì)記住每一次文件的變動(dòng),這樣就可以把檔案恢復(fù)到舊的版本,或是瀏覽文件的變動(dòng)歷史。
本文目錄:
Linux svn服務(wù)器部署
linux svn客戶端命令操作
linux svn備份與恢復(fù)
一、linux svn服務(wù)器部署
1、安裝svn
[root@yang~]#yum install -y subversion [root@yang~]#svnserve--version svnserve,version 1.6.11 (r934486)
2、創(chuàng)建SVN版本庫(kù)
[root@yang~]# mkdir /data/svn [root@yang~]# svnadmin create /data/svn/project [root@yangproject]# ls /data/svn/project/ conf db format hooks locks README.txt
3、配置SVN
[root@yangproject]# cd /data/svn/project/conf/ [root@yangconf]# ls authz passwd svnserve.conf
文件說(shuō)明:
1)svnserve.conf: svn服務(wù)配置文件下。
2)passwd: 用戶名密碼文件。
3)authz: svn權(quán)限配置文件。
svnserve.conf文件
該文件配置項(xiàng)分為以下5項(xiàng):
anon-access: 控制非鑒權(quán)用戶訪問(wèn)版本庫(kù)的權(quán)限。
auth-access: 控制鑒權(quán)用戶訪問(wèn)版本庫(kù)的權(quán)限。
password-db: 指定用戶名口令文件名。
authz-db: 指定權(quán)限配置文件名,通過(guò)該文件可以實(shí)現(xiàn)以路徑為基礎(chǔ)的訪問(wèn)控制。
realm: 指定版本庫(kù)的認(rèn)證域,即在登錄時(shí)提示的認(rèn)證域名稱(chēng)。若兩個(gè)版本庫(kù)的認(rèn)證域相同,建議使用相同的用戶名口令數(shù)據(jù)文件
配置如下:
[root@yangconf]# grep -E "anon-access =|auth-access =|password-db =|authz-db =|realm=" svnserve.conf anon-access = none auth-access = write password-db = passwd authz-db = authz realm = /data/svn/project
passwd文件
作用是配置用戶名和密碼
[root@yangconf]# cat passwd [users] yangyun= yangyunpasswd test = testpasswd
authz文件
配置用戶訪問(wèn)權(quán)限
[root@yangconf]# cat authz |grep -v '#' [aliases] [groups] project_w=yangyun project_r=test [/] project_w=rw project_r=r
4、啟動(dòng)svn服務(wù)
[root@yangconf]# svnserve -d -r /data/svn
5、初始化svn數(shù)據(jù)
[root@yangdjango]# svn import mysite file:///data/svn/project/ -m 'initial import'
將會(huì)拷貝目錄mysite到版本庫(kù)的project下
[root@yangdjango]# svn list file:///data/svn/project manage.py mysite/ static/ templates/ web02/
在導(dǎo)入之后,原來(lái)的目錄樹(shù)并沒(méi)有轉(zhuǎn)化成工作拷貝,為了開(kāi)始工作,還是需要運(yùn)行svn checkout導(dǎo)出一個(gè)工作拷貝。
二、linux svn客戶端命令操作
1、將文件checkout到本地目錄
svn checkout path(path是服務(wù)器上的目錄)
簡(jiǎn)寫(xiě):svn co
例:
svn co svn://115.28.24.178/project --username=yangyun --password=yangyunpasswd #指定版本的文件 svn co svn://115.28.24.178/project --username=yangyun --password=yangyunpasswd -r 5
2、往本地版本庫(kù)中添加新的文件
svn add file #此命令得在checkout出來(lái)的路徑里才能操作
例如:
cp /root/123.txt./ svn add 123.txt #把123.txt加入到本地庫(kù)中 A 123.txt
3、將改動(dòng)的文件提交到版本庫(kù)
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果選擇了保鎖,就使用--no-unlock開(kāi)關(guān))
簡(jiǎn)寫(xiě):svn ci
例:
svn commit 123.txt -m 'add 123.txt' #只提交123.txt svn commit -m 'add 123.txt' #默認(rèn)提交當(dāng)前目錄下的所以文件 svn commit *.txt -m 'add 123.txt' #也可以正則匹配文件提交
4、加鎖/解鎖
svn lock -m "LockMessage" [--force] PATH
例如:
svn lock -m "lock test file" test.PHP svn unlock PATH
5、更新到某個(gè)版本
svn update -r m path
例如:
svn update如果后面沒(méi)有目錄,默認(rèn)將當(dāng)前目錄以及子目錄下的所有文件都更新到最新版本。
svn update -r 200 test.php(將版本庫(kù)中的文件test.php還原到版本200
svn update test.php(更新,于版本庫(kù)同步。如果在提交的時(shí)候提示過(guò)期的話,是因?yàn)闆_突,需要先update,修改文件,然后清除svn resolved,最后再提交commit
簡(jiǎn)寫(xiě):svn up
6、刪除文件
svn delete path -m "delete test fle"
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete testfile"
或者直接svn delete test.php 然后再svn ci -m 'delete testfile‘,推薦使用這種
簡(jiǎn)寫(xiě):svn (del, remove, rm)
7、查看日志
svn log path
例如:svn log test.php 顯示這個(gè)文件的所有修改記錄,及其版本號(hào)的變化
8、查看文件詳細(xì)信息
svn infopath
例如:svn info test.php #可知道路徑版本,時(shí)間,提交者等信息
9、比較差異
svn diff path(將修改的文件與基礎(chǔ)版本比較)
例如:svn diff test.php
svn diff -r m:n path(對(duì)版本m和版本n比較差異)
例如:svn diff -r 200:201 test.php #可知道修改了哪些內(nèi)容
簡(jiǎn)寫(xiě):svn di
10、將兩個(gè)版本之間的差異合并到當(dāng)前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合并到當(dāng)前文件,但是一般都會(huì)產(chǎn)生沖突,需要處理一下)
11、SVN 幫助
svn help
svn help ci
12、版本庫(kù)下的文件和目錄列表
svn list path #顯示path目錄下的所有屬于版本庫(kù)的文件和目錄
簡(jiǎn)寫(xiě):svn ls
13、創(chuàng)建納入版本控制下的新目錄
svn mkdir:創(chuàng)建納入版本控制下的新目錄。
用法:
svn mkdirPATH #效果等同:mkdir test;svn add test;
14、恢復(fù)本地修改
svn revert:恢復(fù)原始未改變的工作副本文件 (恢復(fù)大部份的本地修改)。
revert:
用法: revert PATH...
注意: 本子命令不會(huì)存取網(wǎng)絡(luò),并且會(huì)解除沖突的狀況。但是它不會(huì)恢復(fù)被刪除的目錄
三、linux svn備份與恢復(fù)
1、全量備份:
curr=`svnlook youngest /data/svn/project/` #此處是查詢工程目錄的最新版本 svnadmin dump /data/svn/repos/test --revision 0:$cur --incremental >0-"$curr"svn.bak echo $curr >/tmp/svn_revision
2、增量備份
old=`cat /tmp/svn_revision` new=`svnlook youngest /data/svn/project/` svnadmin dump /data/svn/repos/test --revision $old:$new --incremental >$old"-"$new"svn.bak
3、svn恢復(fù)
恢復(fù)順序從低版本逐個(gè)恢復(fù)到高版本;即,先恢復(fù)最近的一次完整備份,然后恢復(fù)緊挨著這個(gè)文件的增量備份。
cd /data/svn/repos/ svnadmin create test2 svnadmin load test2 < /data/svnback/20110719/0-1112svn.bak svnadmin load test2 < /data/svnback/20110719/1113-1120svn.bak
相關(guān)文章
分析Windows和Linux動(dòng)態(tài)庫(kù)
分析Windows和Linux動(dòng)態(tài)庫(kù)...2006-10-10
Centos忘記mysql密碼及允許遠(yuǎn)程連接的方法
這篇文章主要介紹了Centos忘記mysql密碼及允許遠(yuǎn)程連接的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
Linux環(huán)境中使用Ext3文件系統(tǒng)
Linux環(huán)境中使用Ext3文件系統(tǒng)...2006-10-10
Linux 的 常 用 網(wǎng) 絡(luò) 命 令
Linux 的 常 用 網(wǎng) 絡(luò) 命 令...2006-10-10
輕松解決 Linux操作系統(tǒng)故障恢復(fù)技巧
輕松解決 Linux操作系統(tǒng)故障恢復(fù)技巧...2006-10-10

