Q&A

  • 백업에 관한 질문
안녕하십니까.

paradox DB를 이용하여 현업에 간단한 프로그래밍을 하고 있습니다.

그런데 요구 사항이 백업 버튼을 누루면 백업이 되고 복구 버튼을

누르면 복구가 되도록 해달라고 하네요.

테이블은 3개 인데요.

저의 구상은 백업 버튼을 누르면 디스켓(1.44)에 백업되고

복구 버튼을 누르면 특정 디렉토리에 복구가 되도록 할려고

하는데 누가 이와 같은 프로그램을 짠 도사님들 계신지요.

그리고 백업을 하더라도 디스켓에 나누어 저장되도록 해야 되는데.

어이 좋은 방법이 없는지.

혹시 아시는 분 좀 부탁드리요.

질문이 좀 어렵죠..







3  COMMENTS
  • Profile
    이주흥 1999.11.04 02:07
    hopeship wrote:

    > 안녕하십니까.

    > paradox DB를 이용하여 현업에 간단한 프로그래밍을 하고 있습니다.

    > 그런데 요구 사항이 백업 버튼을 누루면 백업이 되고 복구 버튼을

    > 누르면 복구가 되도록 해달라고 하네요.

    > 테이블은 3개 인데요.

    > 저의 구상은 백업 버튼을 누르면 디스켓(1.44)에 백업되고

    > 복구 버튼을 누르면 특정 디렉토리에 복구가 되도록 할려고

    > 하는데 누가 이와 같은 프로그램을 짠 도사님들 계신지요.

    > 그리고 백업을 하더라도 디스켓에 나누어 저장되도록 해야 되는데.

    > 어이 좋은 방법이 없는지.

    > 혹시 아시는 분 좀 부탁드리요.

    > 질문이 좀 어렵죠..



    백업할때 압축을 하는게 좋을겁니다..

    전 Delzip1.5를 이용해서 백업과 복원을 했거든요...

    여기자료실에 Delzip은 있습니다..

    아래 제가 개발한것중 일부입니다....이건 하드로 백업하고

    하드에서 복원하는 루틴입니다.

    잘 응용하면 원하시는 기능은 쉽게 구현할수 있을겁니다...







    ----백업

    procedure TmainFrm.ToolButton3Click(Sender: TObject);

    begin

    BackFrm.Show;

    BackFrm.Caption := '데이타 백업';

    BackFrm.Label1.Caption := '데이타 백업 진행중......';

    BackFrm.Animate1.Active := True;

    //백업할 디렉토리가 존재하지 않으면

    if NOT DirectoryExists('C:Program FilesCarBackUp') then

    MKDir('C:Program FilesCarBackUp');//디렉토리 생성

    //백업한 날짜를 파일이름으로...

    ZipMaster1.ZipFilename := 'C:Program FilesCarBackUpcar'+DateToStr(Date)+'.zip';

    ZipMaster1.FSpecArgs.Clear;

    ZipMaster1.FSpecArgs.Add('C:Program FilesNetbase안전자동차전문학원dataCar.mdb');

    ZipMaster1.Add;

    BackFrm.Animate1.Active := False;

    ShowMessage('데이타 백업이 끝났습니다!');

    BackFrm.Close;

    ZipMaster1.Unload_Zip_Dll;

    Enable(Sender);

    end;



    -----복원

    procedure TmainFrm.ToolButton4Click(Sender: TObject);

    var

    nLength, i ,j : integer;

    begin

    if OpenDialog1.Execute then begin

    ZipMaster1.ZipFilename := OpenDialog1.FileName;

    ZipMaster1.ExtrBaseDir := 'C:Program FilesNetbase안전자동차전문학원data';

    nLength := Length(ZipMaster1.ZipFilename);

    For i := 1 To nLength Do Begin

    If ZipMaster1.ZipFilename[i] = '' Then

    j := i;

    end;

    if MessageDlg(Copy(ZipMaster1.ZipFilename,j+4,10)+' 일자 데이타를 복원하시겠습니까?'+#13#13+

    '#주의 : 복원작업은 취소할수 없습니다!!',mtWarning, [mbYes, mbNo], 0) = mrYes then begin

    BackFrm.Show;

    BackFrm.Caption := '데이타 복원';

    BackFrm.Label1.Caption := '데이타 복원중......';

    BackFrm.Animate1.Active := True;

    ZipMaster1.ExtrOptions := [ExtrOverWrite];

    ZipMaster1.Extract;

    BackFrm.Animate1.Active := False;

    ShowMessage('데이타 복원이 끝났습니다!');

    BackFrm.Close;

    Enable(sender);

    End;

    end;

    end;



    --zipmaster컴포넌트의 OnProgress이벤트..

    procedure TmainFrm.ZipMaster1Progress(Sender: TObject;

    ProgrType: ProgressType; Filename: String; FileSize: Integer);

    var

    Step : Integer;

    begin

    case ProgrType of

    TotalSize2Process:

    begin



    with BackFrm.ProgressBar1 do

    begin

    Max := 10001;

    Position := 1;

    Step := 100;

    end;

    TotalSize1 := FileSize;

    TotalProgress1 := 0;

    end;

    TotalFiles2Process:

    begin

    end;

    NewFile:

    begin

    end;

    ProgressUpdate:

    begin

    TotalProgress1 := TotalProgress1 + FileSize;

    if TotalSize1 <> 0 then

    begin

    Step := Integer( Int64(TotalProgress1) * Int64(10000) div Int64(TotalSize1) );

    try

    Step := Round( TotalProgress1 * 10000 / TotalSize1 );

    except

    Step := 2147483647;

    end;

    BackFrm.ProgressBar1.Position := 1 + Step;

    end

    else

    BackFrm.ProgressBar1.Position := 10001;

    end;

    EndOfBatch:

    begin

    end;

    end;

    Application.ProcessMessages;

    end;



    참고로 BackFrm의 디자인은 Animate,ProgressBar,Label을

    올려놓고 하시면 됩니다...

    도움이
  • Profile
    송영신 1999.11.24 04:22
    이주흥 wrote:

    > hopeship wrote:

    > > 안녕하십니까.

    > > paradox DB를 이용하여 현업에 간단한 프로그래밍을 하고 있습니다.

    > > 그런데 요구 사항이 백업 버튼을 누루면 백업이 되고 복구 버튼을

    > > 누르면 복구가 되도록 해달라고 하네요.

    > > 테이블은 3개 인데요.

    > > 저의 구상은 백업 버튼을 누르면 디스켓(1.44)에 백업되고

    > > 복구 버튼을 누르면 특정 디렉토리에 복구가 되도록 할려고

    > > 하는데 누가 이와 같은 프로그램을 짠 도사님들 계신지요.

    > > 그리고 백업을 하더라도 디스켓에 나누어 저장되도록 해야 되는데.

    > > 어이 좋은 방법이 없는지.

    > > 혹시 아시는 분 좀 부탁드리요.

    > > 질문이 좀 어렵죠..

    >

    대답해주신 내용 잘보고 프로그램에 많은 도움이 되었습니다.

    헌데 막상 실전에 사용하려고 하니 문제가 생겼습니다.

    압축된 화일의 용량과 디스켓에 남은 용량을 예상할수 없어서 사용하는데

    불편이 따르는군요...

    죄송하지만 도움을 더받았으면 합니다.

    미리 감사드립니다.



    > 백업할때 압축을 하는게 좋을겁니다..

    > 전 Delzip1.5를 이용해서 백업과 복원을 했거든요...

    > 여기자료실에 Delzip은 있습니다..

    > 아래 제가 개발한것중 일부입니다....이건 하드로 백업하고

    > 하드에서 복원하는 루틴입니다.

    > 잘 응용하면 원하시는 기능은 쉽게 구현할수 있을겁니다...

    >

    >

    >

    > ----백업

    > procedure TmainFrm.ToolButton3Click(Sender: TObject);

    > begin

    > BackFrm.Show;

    > BackFrm.Caption := '데이타 백업';

    > BackFrm.Label1.Caption := '데이타 백업 진행중......';

    > BackFrm.Animate1.Active := True;

    > //백업할 디렉토리가 존재하지 않으면

    > if NOT DirectoryExists('C:Program FilesCarBackUp') then

    > MKDir('C:Program FilesCarBackUp');//디렉토리 생성

    > //백업한 날짜를 파일이름으로...

    > ZipMaster1.ZipFilename := 'C:Program FilesCarBackUpcar'+DateToStr(Date)+'.zip';

    > ZipMaster1.FSpecArgs.Clear;

    > ZipMaster1.FSpecArgs.Add('C:Program FilesNetbase안전자동차전문학원dataCar.mdb');

    > ZipMaster1.Add;

    > BackFrm.Animate1.Active := False;

    > ShowMessage('데이타 백업이 끝났습니다!');

    > BackFrm.Close;

    > ZipMaster1.Unload_Zip_Dll;

    > Enable(Sender);

    > end;

    >

    > -----복원

    > procedure TmainFrm.ToolButton4Click(Sender: TObject);

    > var

    > nLength, i ,j : integer;

    > begin

    > if OpenDialog1.Execute then begin

    > ZipMaster1.ZipFilename := OpenDialog1.FileName;

    > ZipMaster1.ExtrBaseDir := 'C:Program FilesNetbase안전자동차전문학원data';

    > nLength := Length(ZipMaster1.ZipFilename);

    > For i := 1 To nLength Do Begin

    > If ZipMaster1.ZipFilename[i] = '' Then

    > j := i;

    > end;

    > if MessageDlg(Copy(ZipMaster1.ZipFilename,j+4,10)+' 일자 데이타를 복원하시겠습니까?'+#13#13+

    > '#주의 : 복원작업은 취소할수 없습니다!!',mtWarning, [mbYes, mbNo], 0) = mrYes then begin

    > BackFrm.Show;

    > BackFrm.Caption := '데이타 복원';

    > BackFrm.Label1.Caption := '데이타 복원중......';

    > BackFrm.Animate1.Active := True;

    > ZipMaster1.ExtrOptions := [ExtrOverWrite];

    > ZipMaster1.Extract;

    > BackFrm.Animate1.Active := False;

    > ShowMessage('데이타 복원이 끝났습니다!');

    > BackFrm.Close;

    > Enable(sender);

    > End;

    > end;

    > end;

    >

    > --zipmaster컴포넌트의 OnProgress이벤트..

    > procedure TmainFrm.ZipMaster1Progress(Sender: TObject;

    > ProgrType: ProgressType; Filename: String; FileSize: Integer);

    > var

    > Step : Integer;

    > begin

    > case ProgrType of

    > TotalSize2Process:

    > begin

    >

    > with BackFrm.ProgressBar1 do

    > begin

    > Max := 10001;

    > Position := 1;

    > Step := 100;

    > end;

    > TotalSize1 := FileSize;

    > TotalProgress1 := 0;

    > end;

    > TotalFiles2Process:

    > begin

    > end;

    > NewFile:

    > begin

    > end;

    > ProgressUpdate:

    > begin

    > TotalProgress1 := TotalProgress1 + FileSize;

    > if TotalSize1 <> 0 then

    > begin

    > Step := Integer( Int64(TotalProgress1) * Int64(10000) div Int64(TotalSize1) );

    > try

    > Step := Round( TotalProgress1 * 10000 / TotalSize1 );

    > except

    > Step := 2147483647;

    > end;

    > BackFrm.ProgressBar1.Position := 1 + Step;

    > end

    > else

    > BackFrm.ProgressBar1.Position := 10001;

    > end;

    > EndOfBatch:

    > begin

    > end;

    > end;

    > Application.ProcessMessages;

    > end;

    >

    > 참고로 BackFrm의 디자인은 Animate,ProgressBar,Label을

    > 올려놓고 하시면 됩니다...

    > 도움이
  • Profile
    송영신 1999.11.24 04:25
    송영신 wrote:



    > 대답해주신 내용 잘보고 프로그램에 많은 도움이 되었습니다.

    > 헌데 막상 실전에 사용하려고 하니 문제가 생겼습니다.

    > 압축된 화일의 용량과 디스켓에 남은 용량을 예상할수 없어서 사용하는데

    > 불편이 따르는군요...

    > 죄송하지만 도움을 더받았으면 합니다.

    > 미리 감사드립니다.

    >