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

Spread the love

Comments (3)

  1. Odpowiedz

    @nxr
    SVN – taki darmowy system wersjonowania plików bardzo lubiany przez programistów. Widać po Tobie, że osoba z zacięciami do OpenSource już dała się zawładnąć korporacji i Team Foundation Server :-p

    @krissus
    mój system jest prostszy w działaniu, bo po co robić mirror SVN i go potem archiwizować jak ma się bezpośredni dostęp do repozytorium?

    BTW
    Mirror

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.