FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Realizar Backup o copias de Seguridad desde FW
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Sun Nov 23, 2008 09:17 AM

Estimados...

Que rutinas hay para generar backup ZIP,
Estoy tratando de usar HB_ZipFile y no me funciona, consegu铆 la Libreria y no me d谩 ningun error de compilaci贸n ni de ejecuci贸n, pero NO me generar nada.
Que otras opciones con FW tengo?

muchas gracias

david
argentina

Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Sun Nov 23, 2008 09:49 AM

David,

hb-zip funciona bastante bien. Porque no sub铆s el c贸digo que te falla, alg煤n ejemplo, y seguro encontramos que est谩s haciendo mal.

Un saludo

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: Realizar Backup o copias de Seguridad desde FW
Posted: Sun Nov 23, 2008 10:22 AM
dobfivewin wrote:Que otras opciones con FW tengo?


Aunque estoy de acuerdo con Carlos Mora (yo personalmente uso la utilidad del propio xHarbour), tienes otra opci贸n gratuita que funciona bastante bien: EASYBACKUP. La puedes obtener en www.reportdesigner.info

Es facilmente configurable.
Un saludo



Manuel
Posts: 18
Joined: Sat Nov 26, 2005 04:45 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Sun Nov 23, 2008 09:44 PM

dobfivewin.
copiar & colar

Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Realizar Backup o copias de Seguridad desde FW
Posted: Sun Nov 23, 2008 10:16 PM
dobfivewin wrote:Estimados...

Que rutinas hay para generar backup ZIP,
Estoy tratando de usar HB_ZipFile y no me funciona, consegu铆 la Libreria y no me d谩 ningun error de compilaci贸n ni de ejecuci贸n, pero NO me generar nada.
Que otras opciones con FW tengo?

muchas gracias

david
argentina


Siempre estoy viendo por todos lados ZIP, ZIP, ZIP, ....

Que se gana con usar ZIP (aparte de ahorrar espacio y dejar un solo fichero)? Que ventajas me proporciona?

Un familiar mio tiene la pu帽etera man铆a de usar ZIP (o el compresor que est茅 de moda). Yo sigo con el COPY. Y la verdad, NUNCA he estado preocupado en como lo voy a recuperar si se da el caso.
S茅 que en cualquier PC podr茅 recuperar la copia (DOS y Windows claro).

Y por cierto, nunca falla, y es compatible con las versiones anteriores, de unos ..... 20 a帽os atras quiz谩s.

En fin no puedo ayudarte, debo ser un bicho raro.

Saludos
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 326
Joined: Sun Oct 09, 2005 05:22 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Mon Nov 24, 2008 12:49 AM
He incorporado un paso para que mis clientes puedan comprimir la informaci贸n y me la env铆en por correo, para casos de soporte.

Uso esto:

   // Comprimir archivos (en ZIP)

   aFiles:=Array(ADir(cPath+"*.DBF"))
   nFiles:=aDir(cPath+"*.DBF",aFiles)
   FOR nI=1 TO nFiles
      cDbf:=cPath+aFiles[nI]
      AAdd(aZip,cDbf)
      CursorWait()
   NEXT nI

   FOR nI=1 TO Len(aZip)
      CursorWait()
      HB_ZipFile(cFile,aZip[nI],,,,,.F.)
   NEXT nI

   // Extraer archivos

   aFiles:=HB_GetFilesInZip(cFile)
   HB_UnZipFile(cFile,,.T.,,cPath,aFiles,NIL)


A ellos tambien les resulta muy 煤til, toda vez que sus propios clientes puedes estar a cientos o miles de kil贸metros de distancia y el envio de este tipo de archivos resulta eficiente.
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Mon Nov 24, 2008 09:19 AM
Estimados

Muchas gracias por su respuesta...

Alfredo tome tu ejemplo y solucion茅 en parte. En cuando al armado del ZIP andubo perfecto.

Pero la extracci贸n no tuve suerte


aFiles:=HB_GetFilesInZip(cFile) 
HB_UnZipFile(cFile,,.T.,,cPath,aFiles,NIL)


la consulta que coloco en: cFile,cPath

Entiendo que cFile es el lugar donde se encuentra el ZIP y cPath es donde tengo que colocar la extracci贸n de archivos ?

nuevamente gracias

Ya que estamos... como es la funcion para que me de la carpeta de ubicacion actual

david
argentina
Posts: 1279
Joined: Mon Feb 06, 2006 04:28 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Mon Nov 24, 2008 10:37 AM

Lo mejor que he visto en backup con fivewin y hbzip es xBLite

Un sistema de respaldo de directorios y subdirectorios seleccionados facilmente y permite restaurar tambi茅n los datos.

Francamente, no se quien lo desarroll贸 originalmente... pero es gratuito y open source (los fuentes est谩n completos)

Originalmente se desarroll贸 utilizando como browse SuperBrowse de Manuel Mercado, y mi buen amigo WMormar lo paso a xBrowse, para los que as铆 lo prefieran.

Lo pueden hallar en:

xBLite Versi贸n para SuperBrowse (M. Mercado)

http://www.box.net/shared/zovhrcoz3f

xBLite Versi贸n modificada por WMormar para xBrowse

http://www.box.net/shared/v4ijq2olgq

Espero que les sean 煤tiles y desde aqu铆 mi gratitud a quienes participaron en el desarrollo de ambas versiones.

Saludos/Regards,

Jos茅 Murugosa

"Los errores en programaci贸n, siempre est谩n entre la silla, el teclado y la IA!!"
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Mon Nov 24, 2008 03:25 PM

los desarrolladores originales de xBackupLite

Kleyber y un servidor, y ademas hay una version mejorada por karihna.

un saludo a aquellos que usan xBackupLite, el cual fue un aporte para todos mas que nada para demostrar el poder de fivewin y harbour.

salu2

:-)

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Mon Nov 24, 2008 04:04 PM
carlos vargas wrote:los desarrolladores originales de xBackupLite

Kleyber y un servidor, y ademas hay una version mejorada por karihna.

:-)

un saludo a aquellos que usan xBackupLite, el cual fue un aporte para todos mas que nada para demostrar el poder de fivewin y harbour.

salu2


Disponible en:

http://www.fivewin.com.br/exibedicas.asp?id=822

un gran saludo a mi querido amigo Carlos Vargas.

Saludos.
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 581
Joined: Tue Oct 11, 2005 11:28 AM
Realizar Backup o copias de Seguridad desde FW
Posted: Mon Nov 24, 2008 05:10 PM
carlos vargas wrote:Kleyber y un servidor...
llamado Carlos Vargas.

Saludos,
Kleyber Derick



FWH / xHb / xDevStudio / SQLLIB
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Tue Nov 25, 2008 07:36 AM
Muchas gracias por vuestras respuestas

instal茅 y prob茅 xBLite y me parece MUY BUENO opci贸n :-) .

Ahora estoy tratando de incorporar algo m谩s simple y autom谩tico para que el usuario no tenga que hacer mucho....

es por eso que necesito saber:

Para la la extracci贸n
C贸digo:
aFiles:=HB_GetFilesInZip(cFile) 
HB_UnZipFile(cFile,,.T.,,cPath,aFiles,NIL)


la consulta que coloco en: cFile,cPath

Entiendo que cFile es el lugar donde se encuentra el ZIP y cPath es donde tengo que colocar la extracci贸n de archivos ?

Ya que estamos... como es la funcion para que me de la carpeta de ubicacion actual
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Wed Nov 26, 2008 04:29 PM
Estimados

Gracias a Alfredo Arteaga logre hacer funcionar el armado de backup en ZIP

les dejo lo armado a modo de ejemplo...

#include 'dob.ini'

static mUBI_ORI
static mUBI_DES
static mNOMARCHIVO

Function BackupZIP()

local oDlgCar 
local lSalir:= .f.
local oFont1

dbcloseall()

DEFINE FONT oFont1 NAME 'Arial' SIZE 0,-15 BOLD

DEFINE DIALOG oDlgCar FROM 0, 0 TO 12, 80 ;
              TITLE 'BACKUP de INFORMACION'

  
   @ 1, 8 BUTTON 'Armar Backup'  OF oDlgCar SIZE 50, 12 ;
			           ACTION ( ArmarBackup(1) )


   @ 2, 8 BUTTON 'Traer Backup'  OF oDlgCar SIZE 50, 12 ;
			           ACTION ( ArmarBackup(2) )


   @ 3, 8 BUTTON 'Salir' OF oDlgCar SIZE 50, 12 ;
	               ACTION ( oDlgCar:End() )

ACTIVATE DIALOG oDlgCar CENTERED

dbcloseall()
return .t.

*-----------------------------------------------------------------------------
Function ArmarBackup(Arma1Extrae2)

local oDlgCar 
local lSalir:= .f.
local oFont1

local oUBI_ORI , oUBI_DES
local xUBI_ORI:=CurDrive()+":\"+CurDir()+"\"

mUBI_ORI:=xUBI_ORI+SPACE(60-LEN(xUBI_ORI))
mUBI_DES:=xUBI_ORI+SPACE(60-LEN(xUBI_ORI))
mNOMARCHIVO:=SPACE(20) 

dbcloseall()

DEFINE FONT oFont1 NAME 'Arial' SIZE 0,-9 //BOLD

DEFINE DIALOG oDlgCar FROM 0, 0 TO 15, 80 ;
              TITLE If(Arma1Extrae2==1,'ARMA','EXTRAE`')+' BACKUP de INFORMACION'

   @ 1.750, 1 SAY 'Carpeta de Origen' of oDlgCar

   @ 1.500,10 BUTTON 'Buscar' OF oDlgCar  SIZE 20, 10 Font oFont1 ;
                     ACTION( mUBI_ORI:=DIRECMain() ,;
                             mUBI_ORI:=alltrim(mUBI_ORI)+'\' ,;
                             mUBI_ORI:=mUBI_ORI+space(60-len(mUBI_ORI)) ,;
                             oUBI_ORI:refresh() )

   @     2,10 GET oUBI_ORI var mUBI_ORI of oDlgCar


   @ 2.625, 1 SAY 'Carpeta de Destino' of oDlgCar

   @ 2.300,10 BUTTON 'Buscar' OF oDlgCar  SIZE 20, 10 Font oFont1 ;
                     ACTION( mUBI_DES:=DIRECMain() ,;
                             mUBI_DES:=alltrim(mUBI_DES)+'\' ,;
                             mUBI_DES:=mUBI_DES+space(60-len(mUBI_DES)) ,;
                             oUBI_DES:refresh() )

   @     3,10 GET oUBI_DES var mUBI_DES of oDlgCar

   @ 3.500, 1 SAY 'Nombre de Archivo ZIP' of oDlgCar

   @     4,10 GET mNOMARCHIVO of oDlgCar

   If Arma1Extrae2 == 1

     @ 4, 10 BUTTON 'Generar Backup'  OF oDlgCar SIZE 50, 12 ;
	  		            ACTION ( Backup1(alltrim(mNOMARCHIVO),alltrim(mUBI_ORI),alltrim(mUBI_DES)) ,;
		  	                    oDlgCar:End() )
   Else

     @ 4, 10 BUTTON 'Extraer Backup'  OF oDlgCar SIZE 50, 12 ;
	  		            ACTION ( Backup2(alltrim(mUBI_DES),alltrim(mUBI_ORI),alltrim(mNOMARCHIVO)) ,;
		  	                    oDlgCar:End() )
   EndIf


   @ 4, 20 BUTTON 'Salir' OF oDlgCar SIZE 50, 12 ;
	               ACTION ( oDlgCar:End() )

ACTIVATE DIALOG oDlgCar CENTERED

dbcloseall()
return .t.

*-----------------------------------------------------------
Function Backup1(cFile,cPath,mUBI_DES,cPass)

local aFiles , nI , aZip:={} , nFiles , cDbf 

If FILE(mUBI_DES+cFile+'.zip') .and. !MsgNoYes(oemtoansi('Archivo Existente, desea Reemplezar ?'),;
                                oemtoansi('Elija opcion SI/NO') )
  return .t.

EndIf
If FILE(cFile+'.zip')
  FErase(cFile+'.zip') 
EndIf

aFiles:=Array(ADir(cPath+"*.DBF")) 
nFiles:=aDir(cPath+"*.DBF",aFiles) 
FOR nI=1 TO nFiles 
   cDbf:=cPath+aFiles[nI] 
   AAdd(aZip,cDbf) 
   CursorWait() 
NEXT nI 

aFiles:=Array(ADir(cPath+"*.DBT")) 
nFiles:=aDir(cPath+"*.DBT",aFiles) 
FOR nI=1 TO nFiles 
   cDbf:=cPath+aFiles[nI] 
   AAdd(aZip,cDbf) 
   CursorWait() 
NEXT nI 

aFiles:=Array(ADir(cPath+"*.FTP")) 
nFiles:=aDir(cPath+"*.FTP",aFiles) 
FOR nI=1 TO nFiles 
   cDbf:=cPath+aFiles[nI] 
   AAdd(aZip,cDbf) 
   CursorWait() 
NEXT nI 

FOR nI=1 TO Len(aZip) 
   CursorWait() 
   HB_ZipFile(mUBI_DES+cFile,aZip[nI],,,,,.F.)    
NEXT nI 

MsgInfo('Carpeta de Origen: '+cPath+chr(13)+;
        'Carpeta de Destino: '+mUBI_DES+chr(13)+;
        'Archivo ZIP: '+cFile+chr(13)+;
        'Cantidad de Archivo Guardados: '+str(Len(aZip),3) ,'Informaci贸n General')

return .t.

*-----------------------------------------------------------
Function Backup2(cPath,mUBI_ORI,cFile)

local aFiles

If !FILE(cFile+'.zip') 
  MsgInfo('Archivo Inexistente','Archivo Inexistente')
  return .t.

EndIf

   aFiles:=HB_GetFilesInZip(cFile) 
   HB_UnZipFile(mUBI_ORI+cFile,,.T.,,cPath,aFiles,NIL) 

return .t.


Para empezar a hacer mejoras:
1) Como puedo incluir una barra de proceso en el armado del ZIP, como ver谩n en la variable (Array) aZip tengo los archivos que van a ser incluido en el backup

2) para descomprimir un archivo, como puedo hacer para que el usuario pueda seleccionar un archivo

desde ya muchas gracias

david
argentina
Posts: 325
Joined: Sun Feb 03, 2008 11:04 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Thu Nov 27, 2008 09:11 AM
Actualizo mi simple programa de Guarda/Recuperar Informacion :-) :

Para Mejorar:
Como puedo implementarle una barra de estado del proceso cuando valla armado o recuperando la Informacion (Meter?) :-)


#include 'dob.ini'

static mUBI_ORI
static mUBI_DES
static mNOMARCHIVO

Function BackupZIP()

local oDlgCar 
local lSalir:= .f.
local oFont1

dbcloseall()

DEFINE FONT oFont1 NAME 'Arial' SIZE 0,-15 BOLD

DEFINE DIALOG oDlgCar FROM 0, 0 TO 12, 40 ;
              TITLE 'GUARDAR / RECUPERAR INFORMACION'

  
   @ 1, 8 BUTTON 'Guardar Informacion'  OF oDlgCar SIZE 60, 12 ;
			           ACTION ( ArmarBackup(1) )


   @ 2, 8 BUTTON 'Recuperar Informacion'  OF oDlgCar SIZE 60, 12 ;
			           ACTION ( ArmarBackup(2) )

  
   @ 3, 8 BUTTON 'Salir' OF oDlgCar SIZE 60, 12 ;
	               ACTION ( oDlgCar:End() )

ACTIVATE DIALOG oDlgCar CENTERED

dbcloseall()
return .t.

*-----------------------------------------------------------------------------
Function ArmarBackup(Arma1Extrae2)

local oDlgCar 
local lSalir:= .f.
local oFont1

local oUBI_ORI , oUBI_DES
local xUBI_ORI:=CurDrive()+":\"+CurDir()+"\"

mUBI_ORI:=xUBI_ORI+SPACE(60-LEN(xUBI_ORI))
mUBI_DES:=xUBI_ORI+SPACE(60-LEN(xUBI_ORI))
mNOMARCHIVO:=SPACE(20) 

dbcloseall()

DEFINE FONT oFont1 NAME 'Arial' SIZE 0,-9 //BOLD

DEFINE DIALOG oDlgCar FROM 0, 0 TO 15, 80 ;
              TITLE If(Arma1Extrae2==1,'GUARDAR','EXTRAER')+' INFORMACION'

   @ 1.750, 1 SAY 'Carpeta de Origen' of oDlgCar

   @ 1.500, 9 BUTTON 'Buscar' OF oDlgCar  SIZE 20, 10 Font oFont1 ;
                     ACTION( mUBI_ORI:=DIRECMain() ,;
                             mUBI_ORI:=alltrim(mUBI_ORI)+'\' ,;
                             mUBI_ORI:=mUBI_ORI+space(60-len(mUBI_ORI)) ,;
                             oUBI_ORI:refresh() )

   @     2,10 GET oUBI_ORI var mUBI_ORI of oDlgCar


   @ 2.625, 1 SAY 'Carpeta de Destino' of oDlgCar

   @ 2.250, 9 BUTTON 'Buscar' OF oDlgCar  SIZE 20, 10 Font oFont1 ;
                     ACTION( mUBI_DES:=DIRECMain() ,;
                             mUBI_DES:=alltrim(mUBI_DES)+'\' ,;
                             mUBI_DES:=mUBI_DES+space(60-len(mUBI_DES)) ,;
                             oUBI_DES:refresh() )

   @     3,10 GET oUBI_DES var mUBI_DES of oDlgCar

   If Arma1Extrae2 == 1

     @ 3.500, 1 SAY 'Nombre de Archivo ZIP' of oDlgCar
     @     4,10 GET mNOMARCHIVO of oDlgCar


     @ 4, 10 BUTTON 'Guardar Informacion'  OF oDlgCar SIZE 60, 12 ;
	  		            ACTION ( Backup1(alltrim(mNOMARCHIVO),alltrim(mUBI_ORI),alltrim(mUBI_DES)) ,;
		  	                    oDlgCar:End() )
   Else

     @ 4, 10 BUTTON 'Extraer Informacion'  OF oDlgCar SIZE 60, 12 ;
	  		            ACTION ( Backup2(alltrim(mUBI_DES),alltrim(mUBI_ORI),alltrim(mNOMARCHIVO)) ,;
		  	                    oDlgCar:End() )
   EndIf


   @ 4, 30 BUTTON 'Salir' OF oDlgCar SIZE 60, 12 ;
	               ACTION ( oDlgCar:End() )

ACTIVATE DIALOG oDlgCar CENTERED

dbcloseall()
return .t.

*-----------------------------------------------------------  GUARDAR INFORMACION
Function Backup1(cFile,cPath,mUBI_DES,cPass)

local aFiles , nI , aZip:={} , nFiles , cDbf 
local oMeter2 , nRow:=1



                     
If FILE(mUBI_DES+cFile+'.zip') .and. !MsgNoYes(oemtoansi('Archivo Existente, desea Reemplezar ?'),;
                                oemtoansi('Elija opcion SI/NO') )
  return .t.

EndIf
If FILE(cFile+'.zip')
  FErase(cFile+'.zip') 
EndIf

aFiles:=Array(ADir(cPath+"*.DBF")) 
nFiles:=aDir(cPath+"*.DBF",aFiles) 
FOR nI=1 TO nFiles 
   cDbf:=cPath+aFiles[nI] 
   AAdd(aZip,cDbf) 
   CursorWait() 
NEXT nI 

aFiles:=Array(ADir(cPath+"*.DBT")) 
nFiles:=aDir(cPath+"*.DBT",aFiles)
FOR nI=1 TO nFiles 
   cDbf:=cPath+aFiles[nI] 
   AAdd(aZip,cDbf) 
   CursorWait() 
NEXT nI 

aFiles:=Array(ADir(cPath+"*.FTP")) 
nFiles:=aDir(cPath+"*.FTP",aFiles) 
FOR nI=1 TO nFiles 
   cDbf:=cPath+aFiles[nI] 
   AAdd(aZip,cDbf) 
   CursorWait() 
NEXT nI 

FOR nI=1 TO Len(aZip) 
   CursorWait() 
   HB_ZipFile(mUBI_DES+cFile,aZip[nI],,,,,.F.)    
NEXT nI 

MsgInfo('Carpeta de Origen: '+cPath+chr(13)+;
        'Carpeta de Destino: '+mUBI_DES+chr(13)+;
        'Archivo/s Guardados en: '+cFile+chr(13)+;
        'Cantidad de Archivos Guardados: '+str(Len(aZip),3) ,'Informaci贸n General del Proceso')

return .t.

*----------------------------------------------------------- RECUPERAR INFORMACION
Function Backup2(cPath,mUBI_ORI)

local aFiles
local cFile

cFile:= cGetFile32( "ZIP  (*.zip)| *.zip|"  +;                    
                     "Seleccione un archivo de ZIP",3) 

msginfo(cFile) 

aFiles:=HB_GetFilesInZip(cFile) 
HB_UnZipFile(cFile,,.T.,,cPath,aFiles,NIL) 

MsgInfo('Carpeta de Origen: '+mUBI_ORI+chr(13)+;
        'Carpeta de Destino: '+cPath+chr(13)+;
        'Archivo/s Recuperados de: '+cFile+chr(13)+;
        'Cantidad de Archivos Recuperados: '+str(Len(aFiles),3) ,'Informaci贸n General del Proceso')

return .t.
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Realizar Backup o copias de Seguridad desde FW
Posted: Thu Nov 27, 2008 10:57 AM

no se puede probar, falta:

include 'dob.ini' //??

mUBI_ORI:=DIRECMain() //???

Saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341