Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ejecutar un Backup (https://www.clubdelphi.com/foros/showthread.php?t=34890)

sierraja 24-08-2006 18:20:43

Ejecutar un Backup
 
Saludos.

Tengo el siguiente escenario:

Servidor Linux (ubuntu 5.04), BD fireBird en este servidor

Cliente WXP aplicacion en delphi 7 componente que hace el respaldo ibservices.

La situacion es la siguiente: al configurar el ibservices para hacer el respaldo con las direcciones locales (es decir wxp), lo ejecuta perfectamente. El nombre del respaldo es la fecha+hora+segundos.fbk. Esto funcionan cuando tengo la BD local. Se realizo otra prueba que consiste en colocar en el servidor linux la BD y se configuro el respaldo dirigido hacia wxo local y funciono. Pero cuando se dirige el respaldo hacia el servidor siempre genera un error que no se puede abrir el archivo de respaldo.

La comunicacion con el servidor esta ok. Se trabaja sin problemas con la bd en el servidor.

Se coloco un disco duro (120gb) adicional en el servidor y se generaron dos particiones: una para la bd (60GB) y la otra para el respaldo. Las particiones estan creadas con root (logico) y ext3 y son primarias.

Incluisve cuando trato de hacer el respaldo en la misma ubicacion de la bd, tambien genera el error de no poder abrir el archivo de respaldo.

Trate de ser lo mas explicito posible. Gracias


Rutina que se utiliza:


Código Delphi [-] with IBBackupService1 do
begin
BackupFile.Clear;
Params.Clear;
Edit1.Text:=FormatDateTime('ddmmyyyyhhmmss', now);
LoginPrompt := False;
Params.Add('user_name=sysdba');
Params.Add('password=masterkey');
Active := True;
try
Verbose := True;
Options := [NonTransportable, IgnoreLimbo];
DatabaseName :='ppal:/lifebd/life.fdb';
BackupFile.Add('ppal:/backup/'+Edit1.Text+'.fbk');
ServiceStart;
finally
Active := False;
end;
Edit2.Text:='ppal:/backup'+Edit1.Text+'.fbk';
Application.MessageBox ('Respaldo Exitoso','Aviso...',mb_ok+mb_Iconinformation);
Edit2.Clear;
Edit1.Text:=DateTimeToStr(now);

sierraja 04-09-2006 15:05:09

Saludos.

Tengo el siguiente escenario:

Servidor Linux (ubuntu 5.04), BD fireBird en este servidor

Cliente WXP aplicacion en delphi 7 componente que hace el respaldo ibservices.

La situacion es la siguiente: al configurar el ibservices para hacer el respaldo con las direcciones locales (es decir wxp), lo ejecuta perfectamente. El nombre del respaldo es la fecha+hora+segundos.fbk. Esto funcionan cuando tengo la BD local. Se realizo otra prueba que consiste en colocar en el servidor linux la BD y se configuro el respaldo dirigido hacia wxo local y funciono. Pero cuando se dirige el respaldo hacia el servidor siempre genera un error que no se puede abrir el archivo de respaldo.

La comunicacion con el servidor esta ok. Se trabaja sin problemas con la bd en el servidor.

Se coloco un disco duro (120gb) adicional en el servidor y se generaron dos particiones: una para la bd (60GB) y la otra para el respaldo. Las particiones estan creadas con root (logico) y ext3 y son primarias.

Incluisve cuando trato de hacer el respaldo en la misma ubicacion de la bd, tambien genera el error de no poder abrir el archivo de respaldo.

Trate de ser lo mas explicito posible. Gracias


Rutina que se utiliza


Código Delphi [-]
with IBBackupService1 do
begin
BackupFile.Clear;
Params.Clear;
Edit1.Text:=FormatDateTime('ddmmyyyyhhmmss', now);
LoginPrompt := False;
Params.Add('user_name=sysdba');
Params.Add('password=masterkey');
Active := True;
try
Verbose := True;
Options := [NonTransportable, IgnoreLimbo];
DatabaseName :='ppal:/lifebd/life.fdb';
BackupFile.Add('ppal:/backup/'+Edit1.Text+'.fbk');
ServiceStart;
finally
Active := False;
end;
Edit2.Text:='ppal:/backup'+Edit1.Text+'.fbk';
Application.MessageBox ('Respaldo Exitoso','Aviso...',mb_ok+mb_Iconinformation);
Edit2.Clear;
Edit1.Text:=DateTimeToStr(now);

sierraja 06-09-2006 01:06:48

Alguien podria opinar por favor. Gracias...

Casimiro Notevi 06-09-2006 09:48:29

¿Creo entender que haces un backup y luego ese archivo creado no puedes abrirlo?, perdona, pero no entiendo exactamente el problema, ¿puedes aclarármelo?

Por cierto, para que se entienda mejor, usa las etiquetas para el código, ya sabes:
[ CODE]
aquí va el código
[ /CODE]

sierraja 08-09-2006 18:44:07

Use las etiquetas equivocadas.

EL problema radica que desde un cliente se manda a ejecutar el backup en el servidor y me genera el siguiente error:

---------------------------
Debugger Exception Notification
---------------------------
Project Life.exe raised exception class EIBInterBaseError with message 'cannot open backup file ppal:/lifebak/08092006123653.fbk'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

La rutina es la siguiente:

Código:


  with IBBackupService1 do
  begin
    BackupFile.Clear;
    Params.Clear;
    Edit1.Text:=FormatDateTime('ddmmyyyyhhmmss', now);
    //ServerName := 'ppal';
    LoginPrompt := False;
    Params.Add('user_name=sysdba');
    Params.Add('password=masterkey');
    Active := True;
    try
      Verbose := True;
      Options := [NonTransportable, IgnoreLimbo];
      DatabaseName :='ppal:/lifebd/life.fdb';
      BackupFile.Add('ppal:/lifebak/'+Edit1.Text+'.fbk');
      ServiceStart;
    finally
      Active := False;
    end;
    Edit2.Text:='c:\backup_life\'+Edit1.Text+'.fbk';
    Application.MessageBox ('Respaldo Exitoso','Aviso...',mb_ok+mb_Iconinformation);
    Edit2.Clear;
    Edit1.Text:=DateTimeToStr(now);
  end;


sierraja 11-09-2006 14:44:26

Alguna opinion al respecto...:confused:

Casimiro Notevi 11-09-2006 21:01:09

Bueno, así, sin verlo, sin tenerlo delante y mirar, probar... es complicado.

Pero, por ejemplo, creo que has dicho que el servidor es linux, entonces no entiendo la siguiente línea:
Código:

Edit2.Text:='c:\backup_life\'+Edit1.Text+'.fbk';
¿Y puedes restaurar el backup hecho?, ¿qué error te sale?

jachguate 11-09-2006 21:12:04

En lo particular, me resulta mas cómodo programar una tarea que haga el backup directamente en el servidor. El script es sencillo, como invocar al gbak con los parámetros adecuados.

Con cron podes conseguir que esta tarea se ejecute automáticamente con la frecuencia que consideres apropiada.

Con respecto de la forma que lo estas haciendo, dudo mucho que el servicio de backup pueda acceder a la ruta ppal:/backup/loquesa.fbk, pero es algo que no he probado ni tengo como hacer ahora. En todo caso, no perdas de vista que el backup se está lanzando desde el cliente, con lo que el archivo de destino, que no es una base de datos, debiera estar accesible para el proceso local, con una ruta que pueda interpretar el sistema de archivos.

Hasta luego.

;)

Casimiro Notevi 11-09-2006 21:40:54

Estoy de acuerdo con jachguate, yo acostumbro a usar el "gbak", es más cómodo.

sierraja 12-09-2006 05:34:02

Ok, por fin algo a que atenerme. EL proposito entonces es hacer un script donde se invoque el gbak en el mismo servidor y sea ejecutado a traves de un cron (si va a ser automatico). Teniendo esto en mente ahora necesito una orientacion para realizar un script y que en el script se le coloque como nombre del respaldo la fecha+hora+segundo+.fbk y sea ejecutado por el cliente (En este particular agradeceria cualquier ejemplo que me puedan suministrar).

NOTA: Casimiro la linea de codigo que comentas, es una linea que me falto comentar por lo tanto al ejecutar el programa siempre se truncaba lineas antes y nunca llegaba a la linea comentada, pero si esta fuera de lugar.

Gracias por su atencion. ;)

jachguate 12-09-2006 17:01:25

Date una vuelta por Time/Date commands o Linux Shell Scripting Tutorial

Hasta luego.

;)

sierraja 18-09-2006 17:33:07

Ok al estudio. gracias...;)


La franja horaria es GMT +2. Ahora son las 16:25:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi