FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[1678] Re:gbak이나 IBBackupService를 써보세요.
박지훈.임프 [cbuilder] 2245 읽음    2005-11-30 12:21
보여주신 소스는 단순히 디비 파일을 복사하는 코드인 듯 한데요.
당연하겠지만 디비가 사용중인 상태에서 복사하면 문제가 생길 수 있습니다. 복사중인 상태에서는 디비 파일에 Write
금지 락이 걸릴 것이므로 디비가 정상적으로 돌아가지 못할 겁니다.

파이어버드/인터베이스는 디비가 동작중인 상태에서도 적은 부하만으로 실시간 백업이 가능한 보기 드문 RDBMS입니다.
파이어버드/인터베이스의 bin 디렉토리에 포함되어 있는 gbak 컴맨드라인 유틸리티를 쓰면 쉽게 할 수 있구요.
(IBExpert의 백업 기능도 이 gbak을 호출하며 단지 옵션 설정을 쉽게 할 수 있게 해줄 뿐이죠)
따라서 코드로 gbak을 호출해주면 간단하고도 다른 문제없이 파이어버드 디비를 백업할 수 있습니다.
물론 원격 디비도 가능합니다. (그렇다고 원격 디비를 로컬로 다운로드까지 해주는 것은 아니고, 디비 서버의 디렉토리 에
fbk 파일을 만들어줍니다)

그리고 더 좋은 방법으로는... 파이어버드가 조금씩 더 인터베이스로부터 멀어지고 있어서 실제로 해봐야 알겠습니다만...
델파이 컴포넌트 팔레트의 InterBase Admin 탭에 있는 IBBackupService 컴포넌트를 쓰는 겁니다. 이 컴포넌트는 이름
그대로 인터베이스 디비를 백업하기 위한 전용 컴포넌트입니다. 물론 백업과 반대로 디비 복원을 위한 IBRestoreService
컴포넌트도 같이 있습니다.

델파이/C++빌더의 InterBase Admin 탭의 컴포넌트들은 InterBase 탭의 컴포넌트들과 함께 InterBase Express의
일부인데요. InterBase 탭의 컴포넌트들은 일반적인 디비 컴포넌트들이기 때문에 dbExpress나 ADO, BDE로도 대체가
되지만 InterBase Admin 탭의 컴포넌트들은 인터베이스 API를 직접 호출하는 디비 관리용의 컴포넌트이기 때문에 일반
디비 컴포넌트 이상의 기능들을 지원합니다. 예를 들면 디비 서버의 설정이나 디비 로그, 보안 등을 지원합니다.

InterBase Express의 최신버전은 여기 파이어버드 자료실에서 InterBase Express를 다운받아 설치하시면 됩니다.
http://interbase.borlandforum.com/impboard/impboard.dll?action=read&db=fb_res&no=60

그럼...


아폴론 님이 쓰신 글 :
: 파이어버드 디비 백업을 받기 위해 다음과 같이 했습니다.
: 될것 같아서 했는데...  다운을 받긴 받는데 빈껍데기만 받는것 같습니다. 크기가 실제는 4메가인데
: 다운은 0메가 네요...
: 아래 방법이 백업으로는 잘못된 것인가요?
:
:
: procedure TTr030F.StartBtnClick(Sender: TObject);
: var dn1,dn2,dncount : Integer;
:     Buffer : array[1..1024] of char;
: begin
:  
:    dn1 := 0;  
:    //다운받을 경로
:    dn1 := FileCreate('C:\Program Files\Package\Data_BackUp\JDATABASE.FDB');
:    dn2 := 0;
:    //실제디비 경로 FDrive:'C:\Package\DataBase\JDATABASE.FDB'
:    dn2 := FileOpen(FDrive, fmOpenRead);
:     if dn2 <> -1 then begin
:       dncount := FileRead(dn2,buffer, sizeof(buffer));
:       while dncount <> 0 do begin
:          fileWrite(dn1, buffer, dncount);
:          dncount := FileRead(dn2, buffer,Sizeof(buffer));
:       end;
:    end;
:
:    FileClose(dn2);
:    FileClose(dn1);
:    showmessage('OK');
: end;

+ -

관련 글 리스트
1672 [질문]FireBird 백업 아폴론 2276 2005/11/29
1678     Re:gbak이나 IBBackupService를 써보세요. 박지훈.임프 2245 2005/11/30
1673     자답입니다. 아폴론 1639 2005/11/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.