Realizar Backup o copias de Seguridad desde FW

dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Realizar Backup o copias de Seguridad desde FW

Post by dobfivewin »

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
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Post by Carlos Mora »

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
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: Realizar Backup o copias de Seguridad desde FW

Post by Manuel Valdenebro »

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
User avatar
Johnson
Posts: 18
Joined: Sat Nov 26, 2005 4:45 pm
Location: Brasil
Contact:

Post by Johnson »

dobfivewin.
copiar & colar
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Re: Realizar Backup o copias de Seguridad desde FW

Post by FiveWiDi »

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.
User avatar
Alfredo Arteaga
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico
Contact:

Post by Alfredo Arteaga »

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:

Code: Select all

   // 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.
dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Post by dobfivewin »

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

Code: Select all

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
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post by jose_murugosa »

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
FWH + Harbour + Bcc7. Una seda!
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Post by carlos vargas »

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)
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

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
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Post by Kleyber »

carlos vargas wrote:Kleyber y un servidor...
llamado Carlos Vargas.

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Post by dobfivewin »

Muchas gracias por vuestras respuestas

instalé y probé xBLite y me parece MUY BUENO opción :D .

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:

Code: Select all

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
dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Post by dobfivewin »

Estimados

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

les dejo lo armado a modo de ejemplo...

Code: Select all

#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
dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Post by dobfivewin »

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?) :oops:

Code: Select all

#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.
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

no se puede probar, falta:

#include 'dob.ini' //??

mUBI_ORI:=DIRECMain() //???

Saludos.
João Santos - São Paulo - Brasil
Post Reply