Yedekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
atakanakarca
Üye
Mesajlar: 12
Kayıt: 19 Eki 2005 11:49

Yedekleme

Mesaj gönderen atakanakarca »

İyi Akşamlar arkadaşlar Programımda veri tabanını yedeklemek için aşagıdaki kodu kullanıyorum....

Kod: Tümünü seç

procedure TForm7.Timer1Timer(Sender: TObject);
var
DataDir, BackupDir : String;
  Fo      : TSHFileOpStruct;
  Buffer  : array[0..4096] of char;

begin

DataDir:=ExtractFileDir(ParamStr(0));
edit1.Text:=datetostr(date);
edit2.Text:=DataDir+'\yedekkayıtlar';
if not directoryexists(edit2.Text) then
begin
mkdir(edit2.Text);
begin
  inherited;
  DataDir:=ExtractFileDir(ParamStr(0));
  BackupDir:=DataDir+'\Yedek';
  DataDir:=DataDir+'\takipveri\*.*';
  if not DirectoryExists(BackupDir) then
  begin
    if not ForceDirectories(BackupDir) then
    begin
      ShowMessage(BackupDir+' klasörü oluşturulamadı, yedek alınamadı!');
      Abort;
    end;
  end;
  FillChar(Buffer, sizeof(Buffer), #0);
  StrECopy(@Buffer, PChar(DataDir));
  FillChar(Fo, sizeof(Fo), #0);
  Fo.Wnd    := Handle;
  Fo.wFunc  := FO_COPY;
  Fo.pFrom  := @Buffer;
  Fo.pTo    := PChar(form7.Edit2.text);
  Fo.fFlags := FOF_FILESONLY or FOF_ALLOWUNDO  or
               FOF_SIMPLEPROGRESS or FOF_NOCONFIRMATION;
  if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then ShowMessage('DİKKAT: Yedekleme işlemi sağlıklı şekilde yapılamadı!')
      else

end;
end
else
begin
begin
  inherited;
  DataDir:=ExtractFileDir(ParamStr(0));
  BackupDir:=DataDir+'\Yedek';
  DataDir:=DataDir+'\takipveri\*.*';
  if not DirectoryExists(BackupDir) then
  begin
    if not ForceDirectories(BackupDir) then
    begin
      ShowMessage(BackupDir+' klasörü oluşturulamadı, yedek alınamadı!');
      Abort;
    end;
  end;
  FillChar(Buffer, sizeof(Buffer), #0);
  StrECopy(@Buffer, PChar(DataDir));
  FillChar(Fo, sizeof(Fo), #0);
  Fo.Wnd    := Handle;
  Fo.wFunc  := FO_COPY;
  Fo.pFrom  := @Buffer;
  Fo.pTo    := PChar(form7.Edit2.text);
  Fo.fFlags := FOF_FILESONLY or FOF_ALLOWUNDO  or
               FOF_SIMPLEPROGRESS or FOF_NOCONFIRMATION;
  if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then ShowMessage('DİKKAT: Yedekleme işlemi sağlıklı şekilde yapılamadı!')
      else

end;
end;
end;
timer nesnesinin intervel özelliğini 10000 yapıyorum.Otomatik olarak yedekleme yapıyor.Ama Benim size sormak istedigim bu yedeklemeyi yaparken olduki veri tabanında olası bir problem oldu..Örnek(İndex Bozulması ) bozulan veri tabanını yedeklemesini nasıl önleye bilirim Bu konuda bana yadımcı olursanız sevinir....

Veri tabanı olarak firebird kullanıyorum..

Not: kodunuzu [ code ] [ /code ] tag ları içine aldım fakat bloklu şekilde yazmış olsaydınız kod daha okunaklı olurdu. rsimsek
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yedekelemeyi dosyaları aynı şekilde kopyalamaktan ziyade zip leyip / sıkıştırarak (yada başka bir sıkıştırma yöntemi ile) yedekleme daha mantıklı olurdu. Ayrıca bu işlemi veritabanını kapattıktan sonra yaparsan her hangi bir bozulma olmayacağına da emin olabilirsin :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
atakanakarca
Üye
Mesajlar: 12
Kayıt: 19 Eki 2005 11:49

Allah razı olsun

Mesaj gönderen atakanakarca »

Abi Sogol Ama sana bişeydaha soracagım veri tabanını kapatıp açmak veriler üzerinde değişikliğe sebeb olmaz mı? Bide 100000 kayıt lı bir programda programın yavaşlamasına sebeb vermez mi ? Tam olarak anlayamadım biraz daha Açıklarmısın Abi .....

Teşekkürler...Kolay gelsin...
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

ata kanarca hocam restore yi nasıl yapıyorsunuz onun kodlarınıda gönderiröisiniz ben bi şekilde yapıyorum ama tam istediğim gibi çalışmıyor
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Kesinlikle ama kesinlikle Firebird servisi çalışırken VT dosyasını kopyalayarak yedek almayın.

Servisi durdurun. Daha sonra kopyalamayı yapıp çalıştırın.

İlla VT çalışırken almak istiyorsanız GBAK tool'unu kullanın. Firebird ile birşikte gelir. Güvenilir yedekleme yapar.

Forumda bir arkadaşın bu işi otomatik yaptığı ücretsiz bir programı vardı. Bence forumda arayıp, onu kullanın. Sanırım programlar bölümündeydi.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

huseyinert yazdı:ata kanarca hocam
:)
atakanakarca
:lol:
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

ALUCARD espirimi yapmaya çalışıyorsun yoksa mesaj yazıp ta başka şeylermi amaçlıyorsun ben anlayamadım boş yere işgal etme... saçmalama... :evil:
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
atakanakarca
Üye
Mesajlar: 12
Kayıt: 19 Eki 2005 11:49

Mesaj gönderen atakanakarca »

huseyinert hocam akşam restore codunu veririm.Kolay gelsin iyi çalışmalar.
Kullanıcı avatarı
huseyinert
Üye
Mesajlar: 233
Kayıt: 19 Nis 2005 06:49
Konum: Bartın

Mesaj gönderen huseyinert »

tşk. ederim hocam.
"Kula bela gelmez Hak yazmayınca,Hak bela yazmaz kul azmayınca..." MEVLANA
Cevapla