Linux運維CentOS系統(tǒng)SVN雙備份Shell腳本

Linux運維CentOS系統(tǒng)SVN雙備份Shell腳本

前言

SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統(tǒng),采用了分支管理系統(tǒng)。說得簡單一點SVN就是用于多個人共同開發(fā)同一個項目,共用資源的目的。
作為一個代碼管理工具,備份操作顯得尤為重要,這里采取這樣的備份策略:在執(zhí)行本地備份的同時,讓Shell腳本自動上傳數(shù)據(jù)到另一臺FTP備份服務器中,這種異地備份策略成本比較小,無需存儲,而且安全系統(tǒng)高,想到與雙備份,本地和異地同時出現(xiàn)數(shù)據(jù)損壞的概率是低很多的。

備份策略說明

使用CentOS 6系列系統(tǒng),安裝vsftpd,修改配置參數(shù)。此外vsftpd的備份目錄可以做RAID1或RAID5。
執(zhí)行腳本將svn項目進行本地目錄備份,然后將備份文件上傳到FTP服務器上,已實現(xiàn)雙備份。

備份步驟

安裝并配置vsftpd

使用yum直接安裝即可。

yum -y install vsftpd

修改配置,由于要進行上傳操作,所以要允許用戶上傳。為安全性考慮,不建議匿名用戶操作。
修改配置后,將不必要的vsftpd.conf參數(shù)屏蔽,顯示為:

[root@private ~]# grep -v "^#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

chroot_local_user=YES這條語句需要重點強調一下,其作用是對用戶登錄權限進行限制,即所有本地用戶登錄vsftpd時只能在自己的家目錄下,這是基于安全的考慮,本實例腳本也會基于這點,要是使用本腳本在實際的生產(chǎn)環(huán)境,需要注意該點。

創(chuàng)建ftp登錄用戶

在備份服務器上創(chuàng)建備份用戶,本次創(chuàng)建用戶svn,并為其分配密碼,還應該將其家目錄更改為備份目錄,本地備份目錄為:/data/backup/svn-backup/,這樣更方便備份工作,以下腳本以此類推。

[root@private ~]# useradd -d /data/backup/svn-backup/ svn
[root@private ~]# echo "svnpasswd" | passwd --stdin svn
Changing password for user svn.
passwd: all authentication tokens updated successfully.

配置svn倉庫

首先檢查操作系統(tǒng)上面是否安裝了subversion,一般centos操作系統(tǒng)都默認安裝了此軟件,如果沒有安裝使用如下命令快速安裝

rpm -qa subversion
yum -y install  subversion
##創(chuàng)建版本庫
svnadmin create /data/svn    //這里的文件目錄自己隨便設置  
##配置svnserve,上述版本庫`/data/svn `建立后在文件夾下會生成conf文件夾,進入`/data/svn/conf`下面會有下面3個文件

[root@private svn]# ls conf/
authz  passwd  svnserve.conf 

##需要修改`svnserve.conf`修改以下幾個部分:

anon-access = read  
auth-access = write  
password-db = passwd  
authz-db = authz  

##修改`passwd`文件為:

[users]  
username = password    //這里的username和password自己設置  

##配置文件`authz`最后加上以下兩行(這兩行解決了 SVN客戶端解決authorization failed問題)

[/]  
* = rw    

##啟動svnserve即可:
svnserve -d -r /home/myrepos/  

備份腳本

本腳本設置輪詢周期為30天一次,Shell會自動刪除30天以前的文件。在vsftpd建立相應的備份用戶svn腳本內容如下:

#!/bin/bash
SVNDIR="/data"
SVNADMIN="/usr/bin/svnadmin"
DATE=$(date +%Y-%m-%d)
OLDDATE=$(date +%Y-%m-%d -d'30 days')
BACKDIR="/data/backup/svn-backup"
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
LogFile=${BACKDIR}/svnbak.log
[ -f ${LogFile} ] || touch ${LogFile}
mkdir ${BACKDIR}/${DATE}

for PROJECT in svn
do
    cd $SVNDIR
    $SVNADMIN hotcopy $PROJECT $BACKDIR/$DATE/$PROJECT --clean-logs
    cd $BACKDIR/$DATE
    tar zcvf ${PROJECT}_svn_${DATE}.tar.gz $PROJECT > /dev/null
    rm -rf $PROJECT
    sleep 2
done

HOST=localhost
FTP_USERNAME=svn
FTP_PASSWORD=Haiyuan
cd ${BACKDIR}/${DATE}

ftp -i -n -v <<!
open ${HOST}
user ${FTP_USERNAME} ${FTP_PASSWORD}
bin
cd ${OLDDATE}
mdelete *
cd ..
rmdir ${OLDDATE}
mkdir ${DATE}
cd ${DATE}
mput *
bye
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容