在 CentOS 中 利用定時器 自動備份 SVN
阿新 • • 發佈:2018-11-09
相關連結:
在MyEclipse CI 2018.9.0 中安裝 SVN 1.10.13-1.9.x
在CentOS 1804中設定Subversion(SVN)開機自啟
使用防火牆正常開啟SVN自啟後無法連線 Unable to connect to URL 'svn://.' Can't open file './format': Permission denied
在CentOS 1804 中安裝 Subversion(SVN)
- 建立備份檔案儲存路徑:
建立資料夾:
檢視已建立的資料夾目錄及大小:[[email protected]_0_7_centos ~]# cd .. [[email protected]_0_7_centos /]# mkdir data_backup [[email protected]_0_7_centos /]# cd data_backup/ [[email protected]_0_7_centos data_backup]# mkdir svn_backup [[email protected]_0_7_centos data_backup]# mkdir svn_backup/full [
其中:[[email protected]_0_7_centos /]# du -h --max-depth=5 /data_backup/ 4.0K /data_backup/svn_backup/full 4.0K /data_backup/svn_backup/increment 4.0K /data_backup/svn_backup/log 24K /data_backup/svn_backup 28K /data_backup/
/data_backup/svn_backup/full:全量備份目錄
/data_backup/svn_backup/increment:增量備份目錄
/data_backup/svn_backup/log:日誌
/data_backup/svn_backup:svn備份目錄
/data_backup/:資料備份目錄
- 查詢所需要的命令:
svnadmin:備份時使用
svnlook:檢視版本時使用[[email protected] svn_backup]# whereis svnadmin svnadmin: /usr/bin/svnadmin /usr/share/man/man1/svnadmin.1.gz [[email protected] svn_backup]# whereis svnlook svnlook: /usr/bin/svnlook /usr/share/man/man1/svnlook.1.gz
- 檢視版本庫的位置:
[[email protected] svn_backup]# cat /etc/sysconfig/svnserve # OPTIONS is used to pass command-line arguments to svnserve. # # Specify the repository location in -r parameter: OPTIONS="-r /data/svn"
- 建立全量備份執行檔案:
/data_backup/svn_backup/svn-backup-full.sh[[email protected]_0_7_centos svn_backup]# vim svn-backup-full.sh
- 編寫全量備份執行檔案:
#!/bin/sh ##Subversion的安裝目錄及執行檔案 SVN_HOME=/usr/bin/ SVN_ADMIN=$SVN_HOME/svnadmin SVN_LOOK=$SVN_HOME/svnlook ##配置庫根目錄 SVN_REPOROOT=/data/svn ##全量備份檔案存放路徑 date=$(date '+%Y-%m-%d_%H:%M:%S') RAR_STORE=/data_backup/svn_backup/full/$date if [ ! -d "$RAR_STORE" ];then mkdir -p $RAR_STORE fi ##讀取專案庫列表 cd $SVN_REPOROOT for name in $(ls) do ##開始做全量備份 $SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$name done
- 建立增量備份執行檔案:
/data_backup/svn_backup/svn-backup-increment.sh[[email protected]_0_7_centos svn_backup]# vim svn-backup-increment.sh
- 編寫增量備份執行檔案:
#!/bin/sh #Subversion的安裝目錄及執行檔案 SVN_HOME=/usr/bin/ SVN_ADMIN=$SVN_HOME/svnadmin SVN_LOOK=$SVN_HOME/svnlook ##配置庫根目錄 SVN_REPOROOT=/data/svn ##增量備份檔案存放路徑 date=$(date '+%Y-%m-%d_%H:%M:%S') RAR_STORE=/data_backup/svn_backup/increment/$date # 如果增量備份的檔案存放路徑不存在,name if [ ! -d "$RAR_STORE" ];then # 建立增量備份檔案存放路徑 mkdir -p $RAR_STORE # 結束if fi ##日誌存放目錄 Log_PATH=/data_backup/svn_backup/log if [ ! -d "$Log_PATH" ];then mkdir -p $Log_PATH fi ##讀取專案庫列表 # 進入版本庫根目錄 cd $SVN_REPOROOT # 讀取目錄下的資料夾,並複製給 name for name in $(ls) # 開始迴圈 do # 單個版本庫資料夾目錄是否存在 if [ ! -d "$RAR_STORE/$name" ];then mkdir $RAR_STORE/$name fi # 進入單個版本庫資料夾目錄 cd $RAR_STORE/$name # 單個版本庫日誌資料夾是否存在 if [ ! -d "$Log_PATH/$name" ];then mkdir $Log_PATH/$name fi # 備份日誌輸出 echo $date 開始備份 >> $Log_PATH/$name/$name.log echo SVN 版本庫 $name 開始備份 >> $Log_PATH/$name/$name.log # 獲得單個版本庫的版本,放入日誌資料夾找那個的臨時檔案A.TMP中 $SVN_LOOK youngest $SVN_REPOROOT/$name > $Log_PATH/A.TMP # 取出單個版本庫的目前版本 UPPER=`head -1 $Log_PATH/A.TMP` ##取出上次備份後的版本號,並做+1處理 # 備份時讀取到last_revision.txt檔案 # 第一次備份時讀取不到$Log_PATH/$name/last_revision.txt,預設上次備份版本為0 if [ ! -f "$Log_PATH/$name/last_revision.txt" ];then echo 0 >> $Log_PATH/$name/last_revision.txt fi # 上次備份的版本,最低為0 NUM_LOWER=`head -1 $Log_PATH/$name/last_revision.txt` # 本次開始備份的版本,最低為1 let LOWER="$NUM_LOWER+1" # > -gt if [ $LOWER -gt $UPPER ];then echo 本次備份的版本是 $LOWER - $UPPER , 未修改,不進行備份 >> $Log_PATH/$name/$name.log echo >> $Log_PATH/$name/$name.log rm -f $Log_PATH/A.TMP fi # <= -le if [ $LOWER -le $UPPER ];then ##開始做增量備份並記錄$UPPER,為下次備份做準備 $SVN_ADMIN dump $SVN_REPOROOT/$name -r $LOWER:$UPPER --incremental > $RAR_STORE/$name/$LOWER-$UPPER.dump rm -f $Log_PATH/A.TMP echo $UPPER > $Log_PATH/$name/last_revision.txt echo 這次我們備份從 $LOWER 到 $UPPER >> $Log_PATH/$name/$name.log echo 備份結束 >> $Log_PATH/$name/$name.log echo >> $Log_PATH/$name/$name.log fi # 結束迴圈 done
- 檢視定時器是否開機自啟:
[[email protected]_0_7_centos ~]# systemctl list-unit-files |grep crond
- 開啟定時任務開機自啟:
[[email protected]_0_7_centos ~]# systemctl enable crond
- 檢視定時任務是否開啟:
[[email protected]_0_7_centos ~]# systemctl status crond
- 開啟定時任務:
[[email protected]_0_7_centos ~]# systemctl start crond
- 編輯定時任務:
[[email protected]_0_7_centos ~]# crontab -e
- 新增定時任務:
3 2 * * * sh /data_backup/svn_backup/svn-backup-increment.sh 5 1 * * 0 sh /data_backup/svn_backup/svn-backup-full.sh
每天凌晨2點3分執行增量備份
每週日的凌晨1點5分執行全量備份 - 相關定時任務請檢視:
CentOS 定時任務 crond
相關連結:
在MyEclipse CI 2018.9.0 中安裝 SVN 1.10.13-1.9.x
在CentOS 1804中設定Subversion(SVN)開機自啟
使用防火牆正常開啟SVN自啟後無法連線 Unable to connect to URL 'svn://.' Can't open file './format': Permission denied