먼저 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의 옵션을 나열하는 대신 다음과 같은 키워드를 사용하면 스크립트 실행 순서를 손쉽게 나타낼 수 있다.
키워드 | 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 ...