André trabalhei nisso das 3:30 as 5:30, põem os defeitos aew. xD.
Só VBScript que trampo.
Se esta em uma maquina que não tenha o admin instalado pede local do BD e IP do servidor (portanto faz bkp de maquina remota){não testada efetivamente}
Escreve no registro as informações colidas.
Faz Gfix, Gback(bck), Gback(gdb)
Sera necessário edita-lo no bloco de notas para personalizar, atendo-se apenas a area indicada.
Código:
' BACKUP.VBS desenvolvido por Canton
Option Explicit
Dim WshShell, bKey, keyexist, fldr, oFso, bdvscyber, bdipserver,localfb,senha, localbck,localgdbbkp, aExec, bExec, cExec
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oFso = CreateObject("Scripting.FileSystemObject")
'*******************************************************************************************************************
'*******************************************************************************************************************
' Atenção só altere os dados abaixo mantendo as ASPAS
'___________________________________________________________________________________________________________________
senha = "masterkey"
localbck = "C:\bkpS\testeBck"
localgdbbkp = "C:\bkpS\testeGDB"
'*******************************************************************************************************************
'*******************************************************************************************************************
' Verifica se a chave existe
function KeyExists(byval sKeyPath)
keyExists= false
sKeyPath= trim(sKeyPath): if (sKeyPath="") then exit function
if not (right(sKeyPath, 1)="\") then sKeyPath= sKeyPath & "\"
on error resume next
createobject("wscript.shell").regRead sKeyPath
select case err
case 0: keyExists= true
case &h80070002: dim sErrMsg
sErrMsg= replace(err.description, sKeyPath, "")
err.clear
createobject("wscript.shell").regRead "HKEY_ERROR\"
keyExists= not (sErrMsg=replace(err.description, _
"HKEY_ERROR\", ""))
end select
on error goto 0
end function
' Variavel que testa se o VScyber esta instalado
bKey = "HKEY_LOCAL_MACHINE\SOFTWARE\VSCyber"
' Testa a variavel
if keyExists(bKey) then
bdvscyber = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\VSCyber\DBPath")
bdipserver = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\VSCyber\DBServerName")
' Se não esta instalado pede o caminho
else
' Pega o caminho digitado e cria uma chave para automatizar os próximos BKPs
bdvscyber = InputBox("Não existe VSCyber instalado nessa maquina, não é possivél determinar o local do BD" & vbCrLf & "Favor informar a localização do VSCyber.gdb" & vbCrLf & "Digite o local", "Backup")
bdipserver = InputBox("Não existe VSCyber instalado nessa maquina, não é possivél determinar o IP do servidor do BD" & vbCrLf & "Favor informar o IP do servidor do VSCyber.gdb" & vbCrLf & "Digite o IP", "Backup")
' grava no registro
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\VSCyber\DBPath", bdvscyber
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\VSCyber\DBServerName", bdipserver
End if
' Variavel determina o local de instalação do FB
localfb = WshShell.RegRead("HKLM\SOFTWARE\Firebird Project\Firebird Server\Instances\DefaultInstance")
' Cria a pasta caso não exista
MakeDir (localbck)
MakeDir (localgdbbkp)
Function MakeDir (strPath)
Dim strParentPath, objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
strParentPath = objFSO.GetParentFolderName(strPath)
If Not objFSO.FolderExists(strParentPath) Then MakeDir strParentPath
If Not objFSO.FolderExists(strPath) Then objFSO.CreateFolder strPath
On Error Goto 0
MakeDir = objFSO.FolderExists(strPath)
End Function
' faz a manutenção no BD
Set aExec = WshShell.Exec(localfb & "bin\gfix.exe -user SYSDBA -password " & senha & " -mend -full -ignore " & chr(34) & bdipserver & ":" & bdvscyber & chr(34))
' Aguarda o fim
Do While aExec.Status <> 1
WScript.Sleep 100
Loop
' Backupea o BD
Set bExec = WshShell.Exec(localfb & "bin\gbak.exe -b -t -user SYSDBA -password " & senha & " " & chr(34) & bdipserver & ":" & bdvscyber & chr(34) & " " & chr(34) & localbck & "\bkp_a.gbk" & chr(34))
' Aguarda o fim
Do While bExec.Status <> 1
WScript.Sleep 100
Loop
' Gera um novo GDB na pasta escolhida
Set cExec = WshShell.Exec(localfb & "bin\gbak.exe -c -rep -user SYSDBA -password " & senha & " " & chr(34) & localbck & "\bkp_a.gbk" & chr(34) & " " & chr(34) & localgdbbkp & "\VSCyber.gdb" & chr(34))
' Aguarda o fim
Do While cExec.Status <> 1
WScript.Sleep 100
Loop
MsgBox "Feito" & vbCrLf & "BD em: " & bdvscyber & vbCrLf & "BCK em: " & localbck & vbCrLf & "Backup de GDB em: " & localgdbbkp, vbInformation, "Backup"
EM anexo o arquivo pronto.