Ver Mensaje Individual
  #5  
Antiguo 01-02-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Te envío un bat que utilizo en los clientes.

La mayor parte es mia, (yo la he tecleado).
La parte de optimización no me acuerdo de quien la saqué. La modifiqué un poco para que calzara en este bat.

A ser utilizada bajo cuenta y riesgo propio. No asumo ninguna responsabilidad por perdidas ocasionadas por la utilizacion del bat.


Normalmente lo ubico en C:\Backup
Lo llamo backup.bat
A este "backup.bat" lo llamo desde "Tareas programasas" en el panel de control a medianoche con "C:\Datos\backup.bat Lunes"
Si la base está en un linux, IPOri será lo IP del linux (p.ej. 192.168.1.1) y origen será "/base/"

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 sweep : SI/NO - si se hace un sweep, para cerrar transacciones terminadas
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=Cliente023
set nombreBD=base023
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
set sweep=SI

rem Saca el dia de la semana
echo.| date | find "actual" > tmp$$$.bat
echo set weekday_=%%4> la.bat
call tmp$$$
cd %destino%

set weekday_=%1

echo *******************************************************************************
echo ***                                                                         ***
echo ***                   ESTA PANTALLA SE PUEDE MINIMIZAR                      ***
echo ***                                                            (VER 080111) ***
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 "%sweep%"=="NO" goto FinSweep
   echo %date% %time% - Sweep
   echo %date% %time% >> copia_%nombre%_%weekday_%.log
   echo %date% %time% - Sweep %IPori%:%origen%%nombreBD%.fdb >> copia_%nombre%_%weekday_%.log
   echo GFix %IPori%:%origen%%nombreBD%.fdb >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gfix" -sweep %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey
:FinSweep

if "%ftp%"=="NO" goto FinFTP
   echo %date% %time% - Envio de Reportes
   echo %date% %time% >> copia_%nombre%_%weekday_%.log
   echo FTP a repositorio >> copia_%nombre%_%weekday_%.log
   echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
   if exist ftp_%nombre%_%weekday_%.txt del ftp_%nombre%_%weekday_%.txt
   echo open 192.168.1.250> ftp_%nombre%_%weekday_%.txt
   echo user tec>> ftp_%nombre%_%weekday_%.txt
   echo paralelogramo>> 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
      echo cd cliente023>> ftp_%nombre%_%weekday_%.txt
      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 tmp$$$.bat del tmp$$$.bat
if exist la.bat del la.bat
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

Última edición por duilioisola fecha: 01-02-2008 a las 14:58:12.
Responder Con Cita