더북(TheBook)

먼저 WebserverBackup이라는 작업을 추가한다. RunScript가 핵심인데 작업을 수행하기 전 또는 수행한 다음에 명령 행에서 필요한 스크립트를 자동으로 실행할 수 있도록 한다. 여기에서는 WebserverBackup 작업을 실행하기 전( RunsWhen = Before),클라이언트에서( RunsOnClient = Yes) mysqlbckup 스크립트를 실행할 것이다. 만일 스크립트를 실행하는 과정에서 오류가 발생하면 작업을 수행하지 않을 것이다( FailJobOnError = Yes).

Job {
  Name = "WebserverBackup"
  FileSet = WebserverData
  JobDefs = DefaultJob
  Pool = ServerBackup
  Client = server01-fd
  RunScript {
  RunsWhen = Before
    FailJobOnError = Yes
    RunsOnClient = Yes
    Command = "/usr/local/bin/mysqlbackup"
  }
}

Runcript를 이용하면 백업 전후에 외부 명령을 실행할 수 있기 때문에 매우 유용하다. RunScript 블록에서 사용 가능한 옵션은 다음과 같다.

RunsOnScccess 작업이 성공하면 스크립트를 실행한다. 기본값은 Yes.

RunsOnFailure 작업이 실패하면 스크립트를 실행한다. 기본값은 No.

RunsOnClient 클라이언트에서 명령을 실행한다. 기본값은 Yes.

FailJobOnError 스크립트에 오류가 발생하면 작업은 실패할 것이다. 기본값은 Yes.

Command 실행할 스크립트 경로이다.

Console 커맨드라인에서 실행할 명령이다.

RunScript의 옵션을 나열하는 대신 다음과 같은 키워드를 사용하면 스크립트 실행 순서를 손쉽게 나타낼 수 있다.

표 12-1 RunScript 옵션 대신 사용할 수 있는 키워드
키워드 RunsOnSuccess RunsOnFailure FailJobOnError RunsOnClient RunsWhen
RunBeforeJob Yes No Before
RunAfterJob Yes No No After
RunAfterFailedJob No Yes No After
ClientRunBeforeJob Yes Yes Before
ClientRunAfterJob Yes No Yes After

WebserverBackup의 RunScript 블록은 작업 전(RunsWhen = Before)에 클라이언트에서 실행(RunsOnClient = Yes)하고 스크립트 실행 과정에서 오류가 발생하면 작업도 실패한다(FailJobOnError = Yes). 따라서 ClientRunBeforeJob 키워드를 사용해서 다음과 같이 작성해도 결과는 동일하다.

Job {
  Name = "WebserverBackup"
  FileSet = WebserverData
  JobDefs = DefaultJob
  Client = server01-fd
  Pool = ServerBackup
  ClientRunBeforeJob = "/usr/local/bin/mysqlbackup"
}

파일 셋 WebserverData는 웹 문서 루트 디렉터리인 /var/www/html과 데이터베이스 백업 파일이 저장되는 /var/dump/mysql을 저장하도록 정의했다.

FileSet {
  Name = "WebserverData"
  Include {
    Options {
      signature = MD5
    }
    File = "/var/www/html"
    File = "/var/dump/mysql"
  }
}

Client 섹션에 파일 데몬에 대한 설정을 추가한다.

Client {
  Name = server01-fd
  Address = 192.168.122.201
  FDPort = 9102
  Catalog = MyCatalog
  Password = "password"
  File Retention = 30 days
  Job Retention = 6 months
  AutoPrune = yes
}

설정 파일을 저장하고 디렉터를 재시작한다.

shinjaehun@losttemple:~$ sudo service bacula-director restart

콘솔을 실행하고 디렉터 상태를 조회해서 새로운 작업 WebserverBackup이 등록되었는지 확인한다.

shinjaehun@losttemple:~$ sudo bconsole
*status dir
...
Scheduled Jobs:
Level       Type    Pri  Scheduled         Name               Volume
===============================================================================
Incremental Backup  10   04-11-2014 23:05  PuppetMasterBackup Vol001
Incremental Backup  10   04-11-2014 23:05  vm01Backup       Vol001
Incremental Backup  10   04-11-2014 23:05  WebserverBackup  Vol001
Full        Backup  11   04-11-2014 23:10  BackupCatalog    TestBackup
...
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.