Einzelnen Beitrag anzeigen

Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

Firebird Datenbank Backup

  Alt 5. Jul 2013, 09:52
Datenbank: firebird • Version: 2.5 • Zugriff über: none
Hallo,
ich habe ein kleines Tool geschrieben das eine Firebird Datenbank zu einem bestimmten Zeitpunkt per Backup sichert.
Die Sicherung kann jeden Wochentag Mo..Fr oder jeden Tag im Monat 1..31 erfolgen. Der Dateiname hat dann z.B. entsprechend die Endung: _Fr

Meine Frage: Ist die Sicherung über die procedure BackupData und den dortigen Aufruf der ShellExecute - gbak.exe so in Ordnung oder sollte ich was beachten, es generell anders machen?

Ich habe das ganze als Setup beigefügt. In der Setup werden auch die Firebird dll´s, usw... entsprechend ins Verzeichnis kopiert. Quellcode ist auch in der Anlage sowie 2 Screenshots: 1x Programm, 1x EXE Verzeichnis

Delphi-Quellcode:
procedure TFormMain.BackupData;
var
  Quelle, Ziel, Dateiname : String;
  Parameter : String;
  Ergebnis : String;
  OK : Boolean;
  BackupResult : Integer;
begin
  OK := TimerBackup.Enabled;
  TimerBackup.Enabled := False;

  if RadioButtonWeekday.Checked
   then Dateiname := TargetDir + 'BackupFile_' + ShortDayNames[DayOfWeek(Date)]
    else Dateiname := TargetDir + 'BackupFile_' + IntToStr(DayOfTheMonth(Date));

  Quelle := '"' + SourceFile + '"';
  Ziel := '"' + Dateiname + '"';

  Parameter := '-v -t -user sysdba -password masterkey '+ Quelle +' '+ Ziel;

  if CheckBoxShowDosWindow.Checked
   then BackupResult := ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0)) + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW)
    else BackupResult := ShellExecute(0,nil,PChar(ExtractFilePath(ParamStr(0)) + 'gbak.exe'),PChar(Parameter),nil,SW_HIDE);

  if BackupResult <= 32
   then Ergebnis := 'Fail'
    else Ergebnis := 'OK';

  MemoLog.Lines.Insert(0, FormatDateTime(FormatSettings.ShortDateFormat + ' ' + FormatSettings.LongTimeFormat, now)
                        + ' # ' + Ergebnis
                        + ' -> ' + Dateiname);

  while MemoLog.Lines.Count > 100 do
    MemoLog.Lines.Delete(100);

  MemoLog.Lines.SaveToFile(ProgramDirectory + 'log.dat');

  TimerBackup.Enabled := OK;
end;
Miniaturansicht angehängter Grafiken
fbbackupprogram.png   programdir.png  
Angehängte Dateien
Dateityp: zip FirebirdBackupSetup.zip (3,13 MB, 16x aufgerufen)
Dateityp: zip Source Code.zip (10,3 KB, 23x aufgerufen)
  Mit Zitat antworten Zitat