Ayuda con backp

Ayuda con backp

Postby rolando » Fri Apr 24, 2009 12:02 pm

Buen día,

Para hacer copia de seguridad de los datos, actualmente uso un .bat (con comandos DOS obviamente) para pasar esos datos desde la pc Servidor a otra de las pc de la red.

Como este proceso se hace un poco lerdo, intento hacerlo desde la misma aplicación, para lo cual estoy trabajando.

La cuestión es que lo que pensé sería más rápido, resultó ser más lento que cuando uso el BAT .

Para relizar estas copias estoy usando la funcion DIRECTORY() (para obtener datos del directorio a copiar) y el mandato COPY FILE.

La DIRECTORY() es rápida dentro del mismo pc pero para tomar datos de otra pc de la red es sumamente lerda y respecto del COPY FILE, pareciera más lento que el comando COPY del DOS.

¿Que puedo usar para este fin que sea más rápido ?.

Gracias

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Ayuda con backp

Postby MauroArevalo » Fri Apr 24, 2009 1:13 pm

Rolando:

Te paso mi rutina completa de como sacar copias de seguridad comprimiendo la información con zip, la construi con la información que se encuentran aca en foro.

Esta rutina genera un archivo comprimido por ejemplo:

HUSINV08.ZIP

La confirugación del nombre es porque me gusta que el usuario tenga control de sus copias, por ejemplo las tres primeros caracteres corresponde al codigo del usuario de la empresa, los tres siguientes caracteres (en azul) corresponde al mudulo que estan utilizando, en este casa inventarios, lo dos siguientes caracteres (en rojo) corresponde al año completo del que estan sacando la información.

El usuario puede restaurar la información a su disco duro nuevamente, el sistema por seguridad saca una copia comprimida internamente para evitar daños por error al restaurar la información, el va generando un consecutivo por cada restuauración que haga el usuario, el nombre del archivo que genera es asi:

ARCH0001.zip

Estas copias se realizan super rapido.

Espero que se sirva.


Code: Select all  Expand view

******************************
* SISTEMA  CONTABLE HYM PLUS *
*      DIWCOPIA.PRG          *
*   COPIAS DE SEGURIDAD      *
* Actualización: Feb.20.2008 *
******************************
#include "FiveWin.ch"

AUTO()             //Función que verifica si tiene permisos el usuario para entrar al modulo

IF Pub:ENTRA="A"  
  ZIPDATOS()        
 ELSE
  MSGINFO(Pub:MENTRA)
  CLOS DATA
ENDI

******************************************************
** Proceso saca copias de seguridad de Datos Contables
******************************************************

FUNCTION ZipDatos()

**SON 81 ARCHIVOS REVISADOS para sacar el Backup

aFiles:={}

ARCHIVO()  //Relleno la Matriz

nLen := Len(afiles)   //Tamaño de la matriz con
nActual:=0

Archivo:="H"+Pub:CODEMP+"INV"+Pub:ANO+".ZIP"  //Nombre del archivo en donde se realiza el Backup
cArchivo:=cGetFile((Archivo),"Seleccione un lugar para grabar el Backup",,'.\\',.t.)

IF Empty(AllTrim(cArchivo))
  RETURN NIL
ENDIF

IF FILE(cArchivo)  
  FErase(cArchivo)  //Borro el archivo comprimido si existe...
ENDIF

DEFINE DIALOG oDlg FROM 1, 1 TO 10, 44 TITLE "Espere ejecutando La copia de seguridad..."

@ 2, 2 METER oMeter VAR nActual TOTAL 100 OF oDlg SIZE 135, 12

ACTIVATE DIALOG oDlg CENTERED;
 on Paint(If(Hb_ZIPFILE(cArchivo,aFiles, 5 , {|cFile,nPos|nActual:=nPos/nLen*100,oMeter:Set(nActual)} ),;
 MsgInfo(("Copia realizada con EXITO "+CRLF+" "+CRLF+"AÑO "+ANONOM+CRLF+" "+CRLF+;
         "Ubicación: "+cArchivo+CRLF+" "+CRLF+"Total archivos 81")),;
 MsgInfo("La copia no se puede realizar")),oDlg:End())

Return Nil

***********************************************************************************
*Restaurar la copia al disco duro de Datos Contables Y GENERA UNA COPIA DE RESPALDO
***********************************************************************************

FUNCTION unZipDatos()

aFiles:={}

ARCHIVO()

RutaDatos:=Pub:DIRARCEMP+Pub:CODEMP
RutaRespal:=RutaDatos+"\RESPALDO"      //Para sacar copia de Respaldo en caso de restaurar
ArchRespal:=RutaRespal+"\ARCH0001.ZIP" //Lleva un consecutivo cada vez que restuara información

nLen := len(aFiles)
nActual:=0

Archivo:="H"+Pub:CODEMP+"INV"+Pub:ANO+".ZIP"  //Nombre del archivo en donde se realiza el Backup
cArchivo:=cGetFile((Archivo),"Seleccione el lugar donde esta la COPIA",,'.\\',.t.)
aExtract := hb_GetFilesInZip(cArchivo)

IF SUBS(RutaDatos,1,2)#"\\"
  IF MSGNOYES( "                ! A T E N CI O N ¡"+CRLF+" "+CRLF+"Seguro que desea Restaurar los Datos,"+CRLF+;
             "se sobreescribiran los existentes en su"+CRLF+;
              "Disco Duro C:\                       "+CRLF+" "+CRLF+"Seleccione" )
    IF Len(aFiles) > 0
      IF !lIsDir(RutaRespal)
        lMkDir(RutaRespal)
      ENDIF
      IF !FILE(ArchRespal)
        HB_ZIPFILE(ArchRespal,aFiles)
       ELSE
        CONTRO:=Val(SUBS(ArchRespal,30,4))
        DO WHILE .T.
          CONTRO++
          CONT:=SUBS(STRZERO(CONTRO),7,4)  
          ArchNuevo:=SUBS(ArchRespal,1,29)+CONT+".ZIP"
          IF !FILE(ArchNuevo)
            HB_ZIPFILE(ArchNuevo,aFiles)
            EXIT
          ENDIF
        ENDD

      ENDIF
      SILOHAGO()
     ELSE
       MsgAlert("Archivo de respaldo corrupto!")
    ENDIF
   ELSE
    MsgAlert("Error, no se realizo la Restauración")
  ENDIF
 ELSE
  MSGINFO("                ! A TE N C I O N ¡"+CRLF+" "+CRLF+;
          "Las copias de seguridad solamente se pueden"+CRLF+;
          "restaurar desde el SERVIDOR.               ")
ENDIF

****************
FUNC SILOHAGO()

DEFINE DIALOG oDlg FROM 1, 1 TO 10, 44 TITLE 'RECUPERANDO INFORMACION ...'

@ 2, 2 METER oMeter VAR nActual TOTAL 100 OF oDlg SIZE 135, 12

ACTIVATE DIALOG oDlg CENTERED;
  on Paint( If( HB_UnZipFile(cArchivo,{|cFile,nPos|nActual:=nPos/nLen*100,oMeter:Set(nActual)} ;
                       ,.T.,,RutaDatos,aExtract,nil) ,;
                    MsgInfo('Carpeta de Origen: '+carchivo+CRLF+;
                    'Carpeta de Destino: '+RutaDatos+CRLF+;
                    'Archivos Recuperados de: '+Archivo+CRLF+;
                    'Cantidad de Archivos Recuperados: 81','Información General del Proceso'),;
                    MsgInfo('La restauración no se puede realizar')),;
            oDlg:End())
RETURN NIL

******************************************************************************************************
***Generar la Matriz de todos los archivos para sacar la copia y los respaldos en caso de Restauración
******************************************************************************************************
FUNC ARCHIVO

F01_HFENX:=Pub:DIRARCEMP+Pub:CODEMP+"\H3"+Pub:CODEMP+Pub:ANO+".DBF"
F02_HFCEP:=Pub:DIRARCEMP+Pub:CODEMP+"\H4"+Pub:CODEMP+Pub:ANO+".DBF"
F03_HFENV:=Pub:DIRARCEMP+Pub:CODEMP+"\H5"+Pub:CODEMP+Pub:ANO+".DBF"
F04_HFVEN:=Pub:DIRARCEMP+Pub:CODEMP+"\H8"+Pub:CODEMP+Pub:ANO+".DBF"
F05_HFCLE:=Pub:DIRARCEMP+Pub:CODEMP+"\HB"+Pub:CODEMP+Pub:ANO+".DBF"
F06_HFCLI:=Pub:DIRARCEMP+Pub:CODEMP+"\HC"+Pub:CODEMP+Pub:ANO+".DBF"
F07_HCIE:=Pub:DIRARCEMP+Pub:CODEMP+"\HE"+Pub:CODEMP+Pub:ANO+".DBF"
F08_HFAC:=Pub:DIRARCEMP+Pub:CODEMP+"\HF"+Pub:CODEMP+Pub:ANO+".DBF"
F09_HPAG:=Pub:DIRARCEMP+Pub:CODEMP+"\HG"+Pub:CODEMP+Pub:ANO+".DBF"
F10_HFENS:=Pub:DIRARCEMP+Pub:CODEMP+"\HH"+Pub:CODEMP+Pub:ANO+".DBF"
F11_HINV:=Pub:DIRARCEMP+Pub:CODEMP+"\HI"+Pub:CODEMP+Pub:ANO+".DBF"
F12_HRAA:=Pub:DIRARCEMP+Pub:CODEMP+"\HJ"+Pub:CODEMP+Pub:ANO+".DBF"
F13_HRBB:=Pub:DIRARCEMP+Pub:CODEMP+"\HK"+Pub:CODEMP+Pub:ANO+".DBF"
F14_HRCC:=Pub:DIRARCEMP+Pub:CODEMP+"\HL"+Pub:CODEMP+Pub:ANO+".DBF"
F15_HMED:=Pub:DIRARCEMP+Pub:CODEMP+"\HM"+Pub:CODEMP+Pub:ANO+".DBF"
F16_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"01.DBF"
F17_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"02.DBF"
F18_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"03.DBF"
F19_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"04.DBF"
F20_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"05.DBF"
F21_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"06.DBF"
F22_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"07.DBF"
F23_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"08.DBF"
F24_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"09.DBF"
F25_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"10.DBF"
F26_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"11.DBF"
F27_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"12.DBF"
F28_HPRO:=Pub:DIRARCEMP+Pub:CODEMP+"\HP"+Pub:CODEMP+Pub:ANO+".DBF"
F29_HFCYZ:=Pub:DIRARCEMP+Pub:CODEMP+"\HQ"+Pub:CODEMP+Pub:ANO+".DBF"
F30_HREM:=Pub:DIRARCEMP+Pub:CODEMP+"\HR"+Pub:CODEMP+Pub:ANO+".DBF"
F31_HFENE:=Pub:DIRARCEMP+Pub:CODEMP+"\HS"+Pub:CODEMP+Pub:ANO+".DBF"
F32_HTRM:=Pub:DIRARCEMP+Pub:CODEMP+"\HT"+Pub:CODEMP+Pub:ANO+".DBF"
F33_HFENR:=Pub:DIRARCEMP+Pub:CODEMP+"\HU"+Pub:CODEMP+Pub:ANO+".DBF"
F34_HGRU:=Pub:DIRARCEMP+Pub:CODEMP+"\HV"+Pub:CODEMP+Pub:ANO+".DBF"
F35_HFBOD:=Pub:DIRARCEMP+Pub:CODEMP+"\HW"+Pub:CODEMP+Pub:ANO+".DBF"
F36_HCOM:=Pub:DIRARCEMP+Pub:CODEMP+"\HX"+Pub:CODEMP+Pub:ANO+".DBF"
F37_HFCON:=Pub:DIRARCEMP+Pub:CODEMP+"\HZ"+Pub:CODEMP+Pub:ANO+".DBF"
F38_HRDD:=Pub:DIRARCEMP+Pub:CODEMP+"\HDD"+Pub:CODEMP+Pub:ANO+".DBF"
F39_HFENP:=Pub:DIRARCEMP+Pub:CODEMP+"\HWW"+Pub:CODEMP+Pub:ANO+".DBF"
F40_HFMCL:=Pub:DIRARCEMP+Pub:CODEMP+"\HXX"+Pub:CODEMP+Pub:ANO+".DBF"
F41_HTEM:=Pub:DIRLOCAL+Pub:CODEMP+"\HTEMP0.DBF"
F42_HFTEP:=Pub:DIRLOCAL+Pub:CODEMP+"\HTEMP2.DBF"
F43_HCOF:=Pub:DIRARCEMP+Pub:CODEMP+"\HCONFIG.DBF"
F44_HFCOI:=Pub:DIRARCEMP+Pub:CODEMP+"\HCOINTE.DBF"
F45_HFENX:=Pub:DIRARCEMP+Pub:CODEMP+"\H3"+Pub:CODEMP+Pub:ANO+".CDX"
F46_HFCEP:=Pub:DIRARCEMP+Pub:CODEMP+"\H4"+Pub:CODEMP+Pub:ANO+".CDX"
F47_HFENV:=Pub:DIRARCEMP+Pub:CODEMP+"\H5"+Pub:CODEMP+Pub:ANO+".CDX"
F48_HFVEN:=Pub:DIRARCEMP+Pub:CODEMP+"\H8"+Pub:CODEMP+Pub:ANO+".CDX"
F49_HFCLI:=Pub:DIRARCEMP+Pub:CODEMP+"\HC"+Pub:CODEMP+Pub:ANO+".CDX"
F50_HFAC:=Pub:DIRARCEMP+Pub:CODEMP+"\HF"+Pub:CODEMP+Pub:ANO+".CDX"
F51_HFENS:=Pub:DIRARCEMP+Pub:CODEMP+"\HH"+Pub:CODEMP+Pub:ANO+".CDX"
F52_HINV:=Pub:DIRARCEMP+Pub:CODEMP+"\HI"+Pub:CODEMP+Pub:ANO+".CDX"
F53_HRAA:=Pub:DIRARCEMP+Pub:CODEMP+"\HJ"+Pub:CODEMP+Pub:ANO+".CDX"
F54_HRBB:=Pub:DIRARCEMP+Pub:CODEMP+"\HK"+Pub:CODEMP+Pub:ANO+".CDX"
F55_HRCC:=Pub:DIRARCEMP+Pub:CODEMP+"\HL"+Pub:CODEMP+Pub:ANO+".CDX"
F56_HMED:=Pub:DIRARCEMP+Pub:CODEMP+"\HM"+Pub:CODEMP+Pub:ANO+".CDX"
F57_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"01.CDX"
F58_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"02.CDX"
F59_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"03.CDX"
F60_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"04.CDX"
F61_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"05.CDX"
F62_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"06.CDX"
F63_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"07.CDX"
F64_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"08.CDX"
F65_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"09.CDX"
F66_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"10.CDX"
F67_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"11.CDX"
F68_HMOV:=Pub:DIRARCEMP+Pub:CODEMP+"\HO"+Pub:CODEMP+Pub:ANO+"12.CDX"
F69_HPRO:=Pub:DIRARCEMP+Pub:CODEMP+"\HP"+Pub:CODEMP+Pub:ANO+".CDX"
F70_HFCYZ:=Pub:DIRARCEMP+Pub:CODEMP+"\HQ"+Pub:CODEMP+Pub:ANO+".CDX"
F71_HREM:=Pub:DIRARCEMP+Pub:CODEMP+"\HR"+Pub:CODEMP+Pub:ANO+".CDX"
F72_HFENE:=Pub:DIRARCEMP+Pub:CODEMP+"\HS"+Pub:CODEMP+Pub:ANO+".CDX"
F73_HTRM:=Pub:DIRARCEMP+Pub:CODEMP+"\HT"+Pub:CODEMP+Pub:ANO+".CDX"
F74_HFENR:=Pub:DIRARCEMP+Pub:CODEMP+"\HU"+Pub:CODEMP+Pub:ANO+".CDX"
F75_HGRU:=Pub:DIRARCEMP+Pub:CODEMP+"\HV"+Pub:CODEMP+Pub:ANO+".CDX"
F76_HFBOD:=Pub:DIRARCEMP+Pub:CODEMP+"\HW"+Pub:CODEMP+Pub:ANO+".CDX"
F77_HCOM:=Pub:DIRARCEMP+Pub:CODEMP+"\HX"+Pub:CODEMP+Pub:ANO+".CDX"
F78_HRDD:=Pub:DIRARCEMP+Pub:CODEMP+"\HDD"+Pub:CODEMP+Pub:ANO+".CDX"
F79_HFENP:=Pub:DIRARCEMP+Pub:CODEMP+"\HWW"+Pub:CODEMP+Pub:ANO+".CDX"
F80_HFMCL:=Pub:DIRARCEMP+Pub:CODEMP+"\HXX"+Pub:CODEMP+Pub:ANO+".CDX"
F81_HTEM:=Pub:DIRLOCAL+Pub:CODEMP+"\HTEMP0.CDX"

AADD( aFiles,F01_HFENX )
AADD( aFiles,F02_HFCEP )
AADD( aFiles,F03_HFENV )
AADD( aFiles,F04_HFVEN )
AADD( aFiles,F05_HFCLE )
AADD( aFiles,F06_HFCLI )
AADD( aFiles,F07_HCIE  )
AADD( aFiles,F08_HFAC  )
AADD( aFiles,F09_HPAG  )
AADD( aFiles,F10_HFENS )
AADD( aFiles,F11_HINV  )
AADD( aFiles,F12_HRAA  )
AADD( aFiles,F13_HRBB  )
AADD( aFiles,F14_HRCC  )
AADD( aFiles,F15_HMED  )
AADD( aFiles,F16_HMOV  )
AADD( aFiles,F17_HMOV  )
AADD( aFiles,F18_HMOV  )
AADD( aFiles,F19_HMOV  )
AADD( aFiles,F20_HMOV  )
AADD( aFiles,F21_HMOV  )
AADD( aFiles,F22_HMOV  )
AADD( aFiles,F23_HMOV  )
AADD( aFiles,F24_HMOV  )
AADD( aFiles,F25_HMOV  )
AADD( aFiles,F26_HMOV  )
AADD( aFiles,F27_HMOV  )
AADD( aFiles,F28_HPRO  )
AADD( aFiles,F29_HFCYZ )
AADD( aFiles,F30_HREM  )
AADD( aFiles,F31_HFENE )
AADD( aFiles,F32_HTRM  )
AADD( aFiles,F33_HFENR )
AADD( aFiles,F34_HGRU  )
AADD( aFiles,F35_HFBOD )
AADD( aFiles,F36_HCOM  )
AADD( aFiles,F37_HFCON )
AADD( aFiles,F38_HRDD  )
AADD( aFiles,F39_HFENP )
AADD( aFiles,F40_HFMCL )
AADD( aFiles,F41_HTEM  )
AADD( aFiles,F42_HFTEP )
AADD( aFiles,F43_HCOF  )
AADD( aFiles,F44_HFCOI )
AADD( aFiles,F45_HFENX )
AADD( aFiles,F46_HFCEP )
AADD( aFiles,F47_HFENV )
AADD( aFiles,F48_HFVEN )
AADD( aFiles,F49_HFCLI )
AADD( aFiles,F50_HFAC  )
AADD( aFiles,F51_HFENS )
AADD( aFiles,F52_HINV  )
AADD( aFiles,F53_HRAA  )
AADD( aFiles,F54_HRBB  )
AADD( aFiles,F55_HRCC  )
AADD( aFiles,F56_HMED  )
AADD( aFiles,F57_HMOV  )
AADD( aFiles,F58_HMOV  )
AADD( aFiles,F59_HMOV  )
AADD( aFiles,F60_HMOV  )
AADD( aFiles,F61_HMOV  )
AADD( aFiles,F62_HMOV  )
AADD( aFiles,F63_HMOV  )
AADD( aFiles,F64_HMOV  )
AADD( aFiles,F65_HMOV  )
AADD( aFiles,F66_HMOV  )
AADD( aFiles,F67_HMOV  )
AADD( aFiles,F68_HMOV  )
AADD( aFiles,F69_HPRO  )
AADD( aFiles,F70_HFCYZ )
AADD( aFiles,F71_HREM  )
AADD( aFiles,F72_HFENE )
AADD( aFiles,F73_HTRM  )
AADD( aFiles,F74_HFENR )
AADD( aFiles,F75_HGRU  )
AADD( aFiles,F76_HFBOD )
AADD( aFiles,F77_HCOM  )
AADD( aFiles,F78_HRDD  )
AADD( aFiles,F79_HFENP )
AADD( aFiles,F80_HFMCL )
AADD( aFiles,F81_HTEM  )




 
Edgar Mauricio Arévalo Mogollón.
Bogotá DC. Colombia
FWH FTDN, xHarbour 1.2.1, Pelles C, Fivedit, Visual Studio Code, Borland 7.30, Mysql, Dbfs
http://www.hymplus.com http://www.hymlyma.com
Tratando de retomar la programación....
User avatar
MauroArevalo
 
Posts: 105
Joined: Thu Jan 19, 2006 11:47 pm
Location: Bogota DC. Colombia

Re: Ayuda con backp

Postby rolando » Fri Apr 24, 2009 1:32 pm

MAuro,

Gracias por responder.

La función Hb_ZIPFILE, ¿sirve para compilar con xHArbour?. Si es así y es rápida como dices, me podría servir para reemplazar el COPY FILE.

Ahora necesitaría algo para reemplazar a la función DIRECTORY(), algo que haga lo mismo pero más rápida cuando la pc a la que se aplica es otra, de la red.

Gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 6 guests