利用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服務壓力,單獨做了備份小組件,放到一台伺服器中。外掛程式負責啟動服務...