SVN完全備份svnadmin hotcopy

2021-09-24 12:32:50 字數 1524 閱讀 6067

利用svnadmin hotcopy可以實現完全備份,但不能進行增量備份。svnadmin hotcopy是將整個庫都「熱」拷貝乙份出來,包括庫的鉤子指令碼、配置檔案等;任何時候執行這個指令碼都得到乙個版本庫的安全拷貝,不管是否有其他程序正在使用版本庫。

優點是:備份過程較快,災難恢復也很快;如果備份機上已經搭建了svn服務,甚至不需要恢復,只需要進行簡單配置即可切換到備份庫上工作。

缺點是:比較耗費硬碟,需要有較大的硬碟支援。

備份命令:

svnadmin hotcopy /path/to/repository /path/to/backup
在/data/shells目錄建立備份指令碼svnbak.sh,假如svn倉庫路徑為/data/svn,要備份到/data/svnbackup/:

#!/bin/bash

## filename:    svnbak.sh

# revision:    1.0

# date:        2014/11/07

# author:      qicheng

# email:

# website:

# description: svn完全備份

# notes:       將指令碼加入crontab中,每天定時執行

#maxdays=7                       # 備份保留最大天數

time=`date +'%y%m%d%h%m%s'`

svnpath=/data/svn               # 定義倉庫repos路徑

bakdir=/data/svnbackup          # 定義備份主目錄

baksubdir=$/$     # 定義全備路徑

baklog=$/$.log    # 定義備份日誌

[ ! -f "$" ] && mkdir -p $

exec 1>$

exec 2>&1

set -x

# 刪除歷史備份

find $ -maxdepth 1 -type f -mtime +$(expr $ - 1) -exec echo "delete {}" \; -exec rm "{}" \;

# 全備份

svnadmin hotcopy $ $

# 如果能列印版本號說明備份正確

svnlook youngest $

[ $? -ne 0 ] && exit 1

cd $

# 壓縮備份

tar cvzf $.tar.gz $/

rm -rf $

# 可以通過rsync把備份檔案同步到遠端備份機上,此處省略。

測試一下:

3)設定定時crontab

每天23點59分開始執行指令碼:

59 23 * * * /bin/bash /data/shells/svnbak.sh

SVN自動完全備份

目的 能夠自動完全備份svn庫,並且生成相應的目錄名。實現方法 批處理命令 計畫任務 具體命令如下 echo 自動備份 at 23 00 every m,t,w,th,f,s,su c backupsvn.bat set mydate temp mydate.tmp set mytime temp ...

MYSQL備份 完全備份

mysql完全備份分為兩種 1 物理備份 通過cp,tar等命令拷貝資料庫的所有檔案,然後把這些檔案轉移到另一台資料庫備份伺服器上 使用scp 修改這些檔案的所有者以及所有組 chown r mysql mysql 把檔案放到對應的目錄下,然後重啟mysql服務。移檔案之前注意停止mysql服務 l...

系統完全備份 增量備份

最近專案遇到需要對資料庫和檔案進行備份操作,主要涉及 完全備份 增量備份 條件備份等,一直思考也沒什麼好的思路。網上最多的是針對與資料庫進行shell命令呼叫的備份,屬於資料庫級的備份,沒有提下業務級的備份。目前做法是為了避免web服務壓力,單獨做了備份小組件,放到一台伺服器中。外掛程式負責啟動服務...