用法
svnadmin dump repos_path [-r lower[:upper]] [--incremental]
svnadmin dump命令用於匯出整個repository或repository下的某個範圍的修訂版本。repos_path是版本庫的路徑,[-r lower[:upper]]用於指定匯出的修訂版本範圍,由引數-r和兩個用:號隔開阿拉伯數字組成。例如:-r 0:50表示匯出才版本0到版本50之間的所有修訂版,-r是revision的縮寫。
而另乙個關鍵引數是--incremental。 它使用增量方式來匯出版本,即每次都只匯出自上乙個版本以來的修改。這樣的好處是第一:可以把乙個大的文 件切分成若干個小的檔案。第二:在版本庫已經存在的情況下,我們只需要每次匯出修改的部分,不需要每次都匯出整個版本庫的內容
超級懶人bat指令碼
@echo off舊文件存根:: 關閉回顯
:: 設定標題
title svn備份指令碼
rem 設定變數
:: svn_home svn程式的安裝路徑,指定到bin目錄上一級。(如果路徑有空格,請用""。)
set svn_home="c:\program files\visualsvn server"
:: svn庫的路徑
set svn_root=e:\repositories
:: 備份svn父目錄的路徑
set svn_backup_root=d:\svnbackup
:: 獲取當前系統日期和時間用來建立目錄,格式:年月日_時分秒毫秒。如:20131129_16275274
set time_dir=%date:~,4%%date:~5,2%%date:~8,2%_%time:~,2%%time:~3,2%%time:~6,2%%time:~9,2%
:: svn備份子目錄的路徑
set backup_directory=%svn_backup_root%\%time_dir%
:: 日誌檔案路徑(將日誌和備份檔案放在乙個目錄,刪除時一起刪除了)
set log=%backup_directory%\backup.log
:: 指定備份檔案刪除時間(單位:天)。0 - 32768 範圍內的任何數字。
set num=365
rem 開始備份svn
:: 判斷svn程式是否存在
if not exist %svn_home% goto error
goto start
:start
:: 查詢日誌大小(單位:位元組),超過1mb就新建乙個 (日誌放入備份目錄後,此語句無效。僅備份!)
:: for /r %svn_backup_root% %%i in (backup.log) do if %%~zi geq 1048576 ren %log% backup_%time%.log
:: 新建目錄
mkdir %backup_directory%
:: 建立日誌
:: 備份svn版本庫並輸出日誌到檔案
for /d %%i in (%svn_root%\*) do (
@echo 備份 %%~ni 庫,備份檔案名:%%~ni.dmp >>%log%
:: 完整備份(增量備份在dump後面新增引數 --incremental)
%svn_home%\bin\svnadmin dump %svn_root%\%%~ni >%backup_directory%\%%~ni.dmp 2>>%log%
):: 輸出備份命令退出碼,用來判斷是否備份成功。成功的退出碼為0.
:: 自動設定計畫任務:每週六 晚上11點執行本指令碼。
at 23:00 /next:s %~f0>>%log%
:: 刪除過期備份
goto delete
:delete
:: 輸出要刪除的目錄到日誌檔案
forfiles /p %svn_backup_root% /m *_* /d -%num% /c "cmd /c echo 刪除資料夾:@file">>%log%
forfiles /p %svn_backup_root% /m *_* /d -%num% /c "cmd /c rd /s/q @path" 2>>%log%
goto end
:error
echo [error]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%程式目錄不存在,請檢查:%svn_home%>>%log%
goto end
:end
:: 輸出一行空行分割日誌
@echo. >>%log%
exit
:: 除錯指令碼用的命令
:: at 16:06 %~f0
:: pause
:: exit
一共四個檔案,兩個方法。乙個用svnadmin dump命令,另乙個用svnadmin hotcopy命令。文章裡的目錄請根據自己的實際情況修改,先介紹svnadmin hotcopy命令指令碼,一共兩個檔案,兩個檔案請放到版本庫父目錄下(一般為x:\repositories)
******backup.bat
@echo 正在備份版本庫%1……因為上文中用了date:~0,10命令,所以請自行把電腦的時間格式調成yyyy-mm-dd,否則會造成無法建立資料夾導致備份失敗(windows只能建立2016-02-01這種格式的資料夾)@%svn_home%\bin\svnadmin hotcopy %1 %backup_directory%\%2
@echo 版本庫%1成功備份到了%2!
backup.bat
echo off
rem subversion 的安裝目錄
set svn_home=」c:\program files (x86)\visualsvn server」
rem 所有版本庫的父目錄
set svn_root=e:\repositories
rem 備份的目錄
set backup_svn_root=d:\svnbackup
set backup_directory=%backup_svn_root%\%date:~0,10%\
if exist %backup_directory% goto checkback
echo 建立備份目錄%backup_directory%>>%svn_root%\backup.log
mkdir %backup_directory%
rem 驗證目錄是否為版本庫,如果是則取出名稱備份
for /r %svn_root% %%i in (.) do @if exist 「%%i\conf\svnserve.conf」 %svn_root%\******backup.bat 「%%~fi」 %%~ni
goto end
:checkback
echo 備份目錄%backup_directory%已經存在,清空ing。
rd /s /q %backup_directory%
goto startback
:end
svnadmin dump方法,兩個檔案post-commit.bat放到版本庫父目錄
deltabackup.bat放到版本庫的hooks資料夾下(每個版本庫的hooks文 件夾下都需要放,支援增量備份,丟計畫裡面就行)
deltabackup.bat
@echo 正在備份版本庫%2……
@%svn_home%\bin\svnadmin dump %svn_root%\%1 –incremental>%delta_backup_svn_root%\%1.dump
@echo 版本庫%2成功備份到了%3!
post-commit.bat
@echo echo off
set svn_home=」c:\program files (x86)\visualsvn server」
set svn_root=e:\repositories
set unix_svn_root=e:\repositories
set delta_backup_svn_root=d:\svnbackup\svnincrementalback
set log_file=%delta_backup_svn_root%\incrementalbackup.log
echo backup revision %2>>%log_file%
for /r %svn_root% %%i in (.) do @if exist 「%%i\conf\svnserve.conf」 %svn_root%\%%~ni\hooks\deltabackup.bat %%~ni %2
goto end
:end
懶人svn自動更新指令碼
需要更新的svn目錄多,人又想偷懶,不想乙個個點進去勤奮更新 1 首先你得安裝svn 2 多個目錄同時更新 3 需要考慮svn被鎖定需要清理的狀態 參考 參考 暫時沒想到命令列檢測svn是否需要清理的方法 我寫了兩個指令碼,乙個清理所有svn資料夾,乙個更新所有svn資料夾 echo off set...
Windows下的SVN備份
完全備份指令碼 檔名backup.bat echo off rem subversion的安裝目錄 set svn home c program files visualsvn server rem 所有版本庫的父目錄 set svn root d svn 庫目錄 rem 備份的目錄 set bac...
SVN學習之windows下svn的安裝
svn是apache的乙個開源專案,全稱為subversion。是乙個基於版本的專案管理軟體,一般在多人開發的專案中使用,目前svn已經替代了原來的cvs。大多數情況下,svn服務安裝在linux伺服器上。下面簡單的說一下svn在windows服務上的安裝。如下圖 3 把svn安裝目錄裡的bin目錄...