Ver Mensaje Individual
  #5  
Antiguo 03-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Aquí les va un batch bastante grande que fui modificando a lo largo de años, con cosas de otra gente, ejemplos que fui encontrando y mías...

Espero no se enojen los autores de las diferentes partes, pues no me acuerdo de sus nombre.

Código:
@echo off
cls

rem ----------------------------------------------------------------------
rem Parametro 1 : Es el sufijo para nombrar el backup (Lunes/Martes/...)
rem nombre : nombre del backup
rem nombreBD : nombre de la base de datos. 
rem            *** Sin path ni extension. ***
rem IPori : direccion IP donde se encuentra la base de datos
rem IPdes : direccion IP donde se hará el restore
rem origen : path donde se encuentra la base de datos
rem destino : path donde se generara copia, backup y restore
rem copia : SI/NO - si se copia la base de datos (solo win a win)
rem backup : SI/NO - si se hace un backup (gbak)
rem restore : SI/NO - si se hace un restore para verificar que el gbak funciono
rem comprimir : SI/NO - utiliza Winrar para hacer la compresion del backup, restore y copia
rem ftp : SI/NO - envia los reportes del backup y restore 
rem ftpBase : SI/NO - envia el backup de la base de datos
rem optimizacion : SI/NO - hace backup/restore de la base si no esta usandose
rem                SOLO PARA WINDOWS !!!
rem deframgentar : SI/NO - ejecuta una desfragmentacion del disco C al finalizar
rem ----------------------------------------------------------------------


set nombre=NombreDelCliente
set nombreBD=NombreDeLaBD
set IPori=127.0.0.1
set IPdes=127.0.0.1
set origen=C:\Datos\
set destino=C:\Backup\
set copia=SI
set backup=SI
set restore=SI
set comprimir=SI
set ftp=SI
set ftpBase=SI
set optimizacion=SI
set defragmentar=SI

cd %destino%

set weekday_=%1

echo *******************************************************************************
echo ***                                                                         ***
echo ***                   ESTA PANTALLA SE PUEDE MINIMIZAR                      ***
echo ***                                                            (VER 070629) ***
echo *******************************************************************************
echo Copia de Seguridad %nombre% - %weekday_%
echo %date% %time% 
echo *******************************************************************************
echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log
echo Copia de Seguridad %nombre% - %weekday_% >> copia_%nombre%_%weekday_%.log
echo %date% %time%  >> copia_%nombre%_%weekday_%.log
echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log

if "%copia%"=="NO" goto FinCopia
   echo %date% %time% - Copia
   echo %date% %time% >> copia_%nombre%_%weekday_%.log
   echo Copia %origen%%nombreBD%.fdb "-->" %destino%%nombreBD%_%weekday_%.bak  >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   copy %origen%%nombreBD%.fdb %destino%%nombreBD%_%weekday_%.bak /y >> copia_%nombre%_%weekday_%.log

   if "%comprimir%"=="NO" goto FinComprimirBAK
      echo %date% %time% - Compresion de Copia
      echo %date% %time% >> copia_%nombre%_%weekday_%.log
      echo Compresion de %destino%%nombreBD%_%weekday_%.bak >> copia_%nombre%_%weekday_%.log
      echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
      if exist %destino%%nombreBD%_%weekday_%.bak "C:\Archivos de programa\WinRAR\WinRAR.exe" a %destino%%nombreBD%_%weekday_%.bak.rar %destino%%nombreBD%_%weekday_%.bak
   :FinComprimirBAK

:FinCopia

if "%backup%"=="NO" goto FinBackup
   echo %date% %time% - Backup
   echo %date% %time% >> copia_%nombre%_%weekday_%.log
   echo Backup - %IPori%:%origen%%nombreBD%.fdb "-->" %destino%%nombreBD%_%weekday_%.GBK >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   if exist backup_%nombre%_%weekday_%.log del backup_%nombre%_%weekday_%.log
   "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -t %IPori%:%origen%%nombreBD%.fdb %destino%%nombreBD%_%weekday_%.GBK -user SYSDBA -pass masterkey -y backup_%nombre%_%weekday_%.log
   type %destino%Backup_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log

   if "%comprimir%"=="NO" goto FinComprimirGBK
      echo %date% %time% - Compresion de Backup
      echo %date% %time% >> copia_%nombre%_%weekday_%.log
      echo Compresion de %destino%%nombreBD%_%weekday_%.GBK >> copia_%nombre%_%weekday_%.log
      echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
      if exist %destino%%nombreBD%_%weekday_%.gbk "C:\Archivos de programa\WinRAR\WinRAR.exe" a %destino%%nombreBD%_%weekday_%.gbk.rar %destino%%nombreBD%_%weekday_%.gbk
   :FinComprimirGBK

:FinBackup

if "%restore%"=="NO" goto FinRestore
   echo %date% %time% - Restore
   echo %date% %time% >> copia_%nombre%_%weekday_%.log
   echo Restore %destino%%nombreBD%_%weekday_%.GBK "-->" %IPdes%:%destino%%nombreBD%_%weekday_%.res >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   if exist restore_%nombre%_%weekday_%.log del restore_%nombre%_%weekday_%.log
   "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -r %destino%%nombreBD%_%weekday_%.GBK %IPdes%:%destino%%nombreBD%_%weekday_%.res -user SYSDBA -pass masterkey -y restore_%nombre%_%weekday_%.log
   type %destino%\Restore_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log

   if "%comprimir%"=="NO" goto FinComprimirGDB
      if IPdes=="127.0.0.1" goto FinComprimirGDB
      echo %date% %time% - Compresion de Restore
      echo %date% %time% >> copia_%nombre%_%weekday_%.log
      echo Compresion de %destino%%nombreBD%_%weekday_%.res >> copia_%nombre%_%weekday_%.log
      echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
      if exist %destino%%nombreBD%_%weekday_%.res "C:\Archivos de programa\WinRAR\WinRAR.exe" a %destino%%nombreBD%_%weekday_%.res.rar %destino%%nombreBD%_%weekday_%.res
   :FinComprimirGDB

:FinRestore

if "%comprimir%"=="NO" goto FinComprimir
   echo %date% %time% >> copia_%nombre%_%weekday_%.log
   echo Borrado de originales >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   if exist %destino%%nombreBD%_%weekday_%.bak del %destino%%nombreBD%_%weekday_%.bak >> copia_%nombre%_%weekday_%.log
   if exist %destino%%nombreBD%_%weekday_%.GBK del %destino%%nombreBD%_%weekday_%.GBK >> copia_%nombre%_%weekday_%.log
   if exist %destino%%nombreBD%_%weekday_%.res del %destino%%nombreBD%_%weekday_%.res >> copia_%nombre%_%weekday_%.log
:FinComprimir


if "%ftp%"=="NO" goto FinFTP
   echo %date% %time% - Envio de Reportes
   echo %date% %time% >> copia_%nombre%_%weekday_%.log
   echo FTP a servidor externo >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   if exist ftp_%nombre%_%weekday_%.txt del ftp_%nombre%_%weekday_%.txt
rem *** Poner una IP correcta
   echo open 123.123.123.123> ftp_%nombre%_%weekday_%.txt
rem ***
   echo user usuario>> ftp_%nombre%_%weekday_%.txt
   echo contrasena>> ftp_%nombre%_%weekday_%.txt
   echo cd logs>> ftp_%nombre%_%weekday_%.txt
   echo asc>> ftp_%nombre%_%weekday_%.txt
   echo send %destino%Backup_%nombre%_%weekday_%.log  backup_%nombre%.log>> ftp_%nombre%_%weekday_%.txt
   echo send %destino%Restore_%nombre%_%weekday_%.log restore_%nombre%.log>> ftp_%nombre%_%weekday_%.txt
   if "%ftpBase%"=="NO" goto FinFTPBase
      echo cd ..>> ftp_%nombre%_%weekday_%.txt
rem *** Poner carpeta correcta
      echo cd directorio>> ftp_%nombre%_%weekday_%.txt
rem *** 
      echo bin>> ftp_%nombre%_%weekday_%.txt
      echo send %destino%%nombreBD%_%weekday_%.gbk.rar>> ftp_%nombre%_%weekday_%.txt
   :FinFTPBase
   echo bye>> ftp_%nombre%_%weekday_%.txt

   FTP -n -s:ftp_%nombre%_%weekday_%.txt >> ftp_%nombre%_%weekday_%.log
   type ftp_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log

:FinFTP

if "%optimizacion%"=="NO" goto FinOptimizacion
   Echo %date% %time% - Optimizacion
   Echo Optimizacion >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   Echo      Desconectando BD ...
   Echo Desconectando BD ... >> copia_%nombre%_%weekday_%.log
   "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gfix.exe" -shut -attach 30 %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey 2> errout.tmp

   echo 1> nul 2> vacio.tmp
   echo N 1> N_CR.tmp
   comp errout.tmp vacio.tmp 1> nul 2> nul < N_CR.tmp
   if errorlevel 1 GOTO ERRBDConectada

   Echo      Copia de la base antes de optimizar
   Echo Copia de la base antes de optimizar >> copia_%nombre%_%weekday_%.log
   copy %origen%%nombreBD%.fdb %destino%%nombreBD%.OPTIMIZACION /y > errout.tmp
   if errorlevel 1 GOTO ERRNoCopia

   echo      Parando Servidor Firebird ...
   echo Parando Servidor Firebird ... >> copia_%nombre%_%weekday_%.log
   NET STOP "Firebird Server - Defaultinstance" 1> nul 2>> copia_%nombre%_%weekday_%.log
   IF errorlevel 1 GOTO ERRNoParaFirebird

   echo      Arrancando Guardian ...
   echo Arrancando Guardian ... >> copia_%nombre%_%weekday_%.log
   NET START "Firebird Guardian - DefaultInstance" 1> nul 2>> copia_%nombre%_%weekday_%.log
   IF errorlevel 1 GOTO ERRNoIniciaGuardian

   echo      Haciendo Backup ...
   echo Haciendo Backup ... >> copia_%nombre%_%weekday_%.log
   if exist backup_%nombre%_Optimizacion.log del backup_%nombre%_Optimizacion.log
   "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -t %IPori%:%origen%%nombreBD%.fdb %destino%%nombreBD%_Optimizacion.GBK -user SYSDBA -pass masterkey -y backup_%nombre%_Optimizacion.log

   echo 1> nul 2> vacio.tmp
   echo N 1> N_CR.tmp
   comp backup_%nombre%_Optimizacion.log vacio.tmp 1> nul 2> nul < N_CR.tmp
   if errorlevel 1 GOTO ERRBackup

   echo      Haciendo Restore ...
   echo Haciendo Restore ... >> copia_%nombre%_%weekday_%.log
   if exist restore_%nombre%_optimizacion.log del restore_%nombre%_optimizacion.log
   "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -r %destino%%nombreBD%_optimizacion.GBK %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey -y restore_%nombre%_optimizacion.log

   echo 1> nul 2> vacio.tmp
   echo N 1> N_CR.tmp
   comp restore_%nombre%_optimizacion.log vacio.tmp 1> nul 2> nul < N_CR.tmp
   if errorlevel 1 GOTO ERRRestore

:ACTIVAR_BASE
   echo      Activando BD...
   echo Activando BD... >> copia_%nombre%_%weekday_%.log
   "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gfix.exe" -online %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey 2> errout.tmp

   echo 1> nul 2> vacio.tmp
   echo N 1> N_CR.tmp
   comp errout.tmp vacio.tmp 1> nul 2> nul < N_CR.tmp
   if errorlevel 1 GOTO ERRNoActivaBD

   goto FinOptimizacion

:ERRBDConectada
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : Base de Datos Conetada >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRNoCopia
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo hacer una copia de la base de datos >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRNoParaFirebird
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo detener el servicio Firebird >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRNoIniciaGuardian
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo iniciar el servicio Firebird Guardian >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRBackup
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo hacer el backup >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRRestore
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo hacer el restore >> copia_%nombre%_%weekday_%.log
Echo Restaura la base de antes de optimizar >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
copy %destino%%nombreBD%.OPTIMIZACION %origen%%nombreBD%.fdb /y > errout.tmp
goto ACTIVAR_BASE

:ERRNoActivaBD
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo Activar la Base de Datos >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:FinOptimizacion

if "%defragmentar%"=="NO" goto FinDefragmentar
   echo %date% %time% - Desfragmentando 
   echo Desfragmentando unidad %SystemDrive%... >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   %windir%\system32\defrag.exe %SystemDrive% -f > %destino%defrag_SD_%nombre%_%weekday_%.log
   type %destino%defrag_SD_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log

   Rem comprombamos si la unidad con datos es la misma, y si no tambien se desfragmenta
   CD > errout.tmp
   for /f "tokens=1 delims=\" %%i in (errout.tmp) do if not "%%i"=="%SystemDrive%" echo Desfragmentando tambien unidad:%%i... >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log

   for /f "tokens=1 delims=\" %%i in (errout.tmp) do if not "%%i"=="%SystemDrive%" %windir%\system32\defrag.exe %%i -f > %destino%defrag_DD_%nombre%_%weekday_%.log
   type %destino%defrag_DD_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log
:FinDefragmentar

echo %date% %time% - Limpieza
echo Limpieza >> copia_%nombre%_%weekday_%.log
echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log

echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log
echo Finalizada copia de seguridad %nombre% - %weekday_% >> copia_%nombre%_%weekday_%.log
echo %date% %time%  >> copia_%nombre%_%weekday_%.log
echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log
echo .  >> copia_%nombre%_%weekday_%.log
echo .  >> copia_%nombre%_%weekday_%.log
echo .  >> copia_%nombre%_%weekday_%.log

type copia_%nombre%_%weekday_%.log >> copia.log
if exist N_CR.tmp del N_CR.tmp
if exist vacio.tmp del vacio.tmp
if exist errout.tmp del errout.tmp
if exist ftp_%nombre%_%weekday_%.txt del ftp_%nombre%_%weekday_%.txt
if exist ftp_%nombre%_%weekday_%.log del ftp_%nombre%_%weekday_%.log
if exist copia_%nombre%_%weekday_%.log del copia_%nombre%_%weekday_%.log
Responder Con Cita