Jako, że nie da się backupować bezpośrednio repozytorii SVN będących on-line, trzeba było napisać prosty skrypt, który najpierw zrobi ich hotcopy a dopiero potem backup na zadaną lokalizację sieciową. Zamiast robienia backup set i używania ntbackup można spakować cały folder docelowy i przegrać go zwykłym xcopy, w sumie wyjdzie na to samo a pewnie będzie szybciej i prościej do odzyskiwania.
Środowisko:
Windows Server 2003
Apache 2.2 z modułem SVN
' SVNbackup.vbs
' Backups all SVN repositories from selected directory + Apache config
' Author Kuba Siatkowski https://w-files.pl/author/kfaz
' ver 1.0.1
optionexplicit Const FOR_READING = 1 Dim strReposFolder, colReposFolders, strBackupFolder, colBackupFolders, strBackupLocation, strApacheLocDim objFSO,WshShell, objReposFolder, objBackupFolder, objSubFolder, objSubBackupFolder, strBackupset, fileBackupset
strReposFolder = "C:RepositorySVN" ' place where all SVN repos are
strBackupFolder = "C:backup" ' temp folder for local backups
strBackupLocation = "\backupserverbackupsharebackupname.bkf" ' place for backups
strApacheLoc = “C:Apache” ‘apache directory (SVN configs, plug-ins etc)
strBackupset = strBackupFolder&“backupset.bks”
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objReposFolder = objFSO.GetFolder(strReposFolder)
Set colReposFolders = objReposFolder.SubFoldersSet
objBackupFolder = objFSO.GetFolder(strBackupFolder)
Set colBackupFolders = objBackupFolder.SubFoldersSet
fileBackupset = objFSO.CreateTextFile(strBackupset, True)
'delete old backups from temp folder
For Each objSubBackupFolder In colBackupFolders
objSubBackupFolder.Delete True
Next
‘hotcopy all repos from reposdir and create backupset
For Each objSubFolder In colReposFolders
WshShell.run "svnadmin.exe hotcopy "&strReposFolder&""&objSubFolder.Name&" "&strBackupFolder&objSubFolder.Name, 1, true
fileBackupset.WriteLine ""&strBackupFolder&objSubFolder.Name&""
Next
'add Apache to backupset
fileBackupset.WriteLine ""&strApacheLoc fileBackupset.close ‘do the backup
WshShell.run "ntbackup.exe backup @"&strBackupset& " /n ""SVN Repos “&Now&""" /v:yes /r:no /rs:no /hc:off /m normal /j ""SvnBackup""/l:s /f "&strBackupLocation, , true
nExoR
Krissus
kfaz