PDA

Ver la Versión Completa : Ejecutar un Backup


sierraja
24-08-2006, 18:20:43
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 [-] (http://www.clubdelphi.com/foros/#) 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



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:



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:

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 (http://www.tldp.org/LDP/abs/html/timedate.html) o Linux Shell Scripting Tutorial (http://www.freeos.com/guides/lsst/)

Hasta luego.

;)

sierraja
18-09-2006, 17:33:07
Ok al estudio. gracias...;)