Bacula
發表於 : 2013-04-10 14:17:27
http://allen-study.blogspot.tw/2012/10/ ... inese.html
Backup] Bacula on Ubuntu 12.04 - Chinese Version
Bacula是一套企業級的備份軟體,且Open Source。
這套軟體的設定過程非常複雜,所以在學習過程中有一些困難,但是實際操作後應可漸漸習慣。它的參考文件相當豐富,且備份功能十分完備。
若小型企業在導入備份系統時,覺得市面上的備份方案太貴了,可以採用這套系統,如此軟體的採購就全部省下來了。
若貴公司有這方面的需求,可與筆者聯繫,筆者可以協助導入,提供教育訓練與系統建置的服務。
如果我們僅僅只寫安裝步驟,將指令貼一貼就結束,讀者一定滿腦子的「為什麼」,沒有接觸過備份的朋友一定很快就打退堂鼓,一會就不想學了。因此在開始之前,我們大概了解一下備份的雛型,從抽象的概念到實體設備都大略講解,讓完全未接觸過備份的朋友也能有初步的概念。
備份與儲存是息息相關的,「備份」顧名思義就是將一件東西再做一份備用,以備不時之需。而這邊談的是「資料備份」,也就是將您的資料再多保留一份,留作他日需要的時候再取用。
儲存媒體則有磁片、磁帶、硬碟、光碟、快閃記憶體(如隨身碟、相機的記憶卡)等,儲存媒體的特性就是「存取速度越快、容量越小、貴」且「存取速度越慢、容量越大、便宜」。下面筆者畫了一個作業系統課本裡都有的記憶體金字塔圖,靠近頂端的就是「快、貴、小」;靠近底端的就是「慢、便宜、大」。這圖是筆者簡化過,並依目前較常見的儲存體來分級,為的是讓讀者比較好理解。
Memory Hierarchy
對照:
Tape - 磁帶,容量大,適合巨量資料備份,缺點為速度慢,且必須循序存取。
Hard Disk - 較Tape快些,但還是有馬達、讀寫頭等機械機構,所以仍有其極限。
Flash Memory - 這是筆者加進來的,因為這種儲存媒體沒有機械元件,且可隨機存取,效率比Tape與Hard Disk更好。常見的產品有SSD、相機儲存卡、USB隨身碟等。
Main Memory - 也就是像PC上的記憶體。Main Memory以上的儲存媒體這邊就不再多介紹了,這個與系統有關,不是我們這個主題裡要探討的範圍。主記憶體是用來儲存當下較常使用的資料,比如作業系統...,因為硬碟實在太慢了,所以Main Memory就是幫助提升效率的暫存區。(嘖,就說不介紹了)
Cache - Cache比Main Memory更快。用途就像Main Memory與硬碟之間的關係。
Registor - 在CPU裡的高速小儲存。
而備份,就是「複製一份起來放」的意思,因此不會使用需要充電才能儲存的儲存體,所以Main Memory以上的就可以不必看了,除非是特殊用途或應用。
就一般家庭用電腦的備份而言,我們大多會備份一些自己寫的文件、照片,或是一些具有紀念價值的資料。而備份的方式很簡單,就是將資料燒錄到光碟中,然後將燒錄完成的光碟「好好保存」。過了十年,再取出想要讀取的時候,可能很多朋友會發現,光碟片不能讀了!! 事實上光碟並不是一個很安全的儲存媒體,它的塗料會變質,從外觀完全看不出來。當然硬碟也有可能會壞軌,磁帶也有可能會磁偏移,但總不能不備份了。現在有比較好的NAS(網路儲存)可以用,做個鏡像磁碟陣列就安全很多,所以備份不僅僅只備份(Backup),更要考慮到將來的可回復性(Restorable)。
重要! 資料備份的重點在於「可回復」!
上面所提到的備份,是一個很簡單的例子。
若我所備份的文件昨天才燒錄到光碟上,今天修改了一個字,難道要再備份一片新的光碟嗎? 如果今天文件A新增了一個字串,明天文件B多加了一張圖,後天文件C刪除了,那我該如何備份? 若接下來一整周都沒有再編輯文件,而是新建了幾個檔案,那我又該怎麼整理這些分類?
這些問題,專業的備份軟體都已經有一套完善的理論與機制可以協助使用者解決,所以使用自動化的備份軟體要比我們手工進行備份要完整且方便。如果是小型企業在備份資料上有需求,而尋求SI導入備份系統又太昂貴,可以考慮使用Open Source備份軟體來達到節省成本的目的。
備份四大要件
在開始進入Bacula的主題之前,我們先來挑解一下正規的備份方法。
備份,由四個元素構成,這四個構成元素分別是下列所示:
1. FileSet檔案集,就是一堆檔案的意思 (What,備份什麼)
2. Client用戶端 (Who,備份誰)
3. Schedule排程 (When何時備份)
4. Pool備份池 (Where,備份到哪裡)
看到這邊,一定有人會問,「為什麼沒有Why」?
Why? 為什麼要備份嗎? 這個問題不是應該是我們有這個需求,所以才要求要做備份的嗎!? (翻桌)
為了防止我們珍貴的資料遺失,備份是必要的(Why)。
案例如下
家庭使用者:我的照片為什麼不見了 !? (大哭)
校園使用者:我寫了五天的報告!! 不見了!! (大哭)
小企業使用者:我的FTP硬碟毀了! 謎片資料庫啊!!! (大哭)
中企業使用者:我的FTP硬碟毀了! 謎片資料庫啊!!! (大哭)
大企業使用者:我的FTP硬碟毀了! 謎片資料庫啊!!! (大哭)
由此可知備份的重要! 所以這個「Why」說它不屬於備份的四大要素,卻又是備份需求的開端。
知道四大要件後,開始談備份系統的備份機制。
Backup Job
四大要件即可組成一個Backup Job。
解說:
定義一個Backup Job的時候,我們得告訴Backup System這個Backup Job要做那些事情,如四大要件定義的,備份哪個主機(Client)的什麼資料(FileSet)、何時備份(Schedule)、備份到哪裡(Pool)。因此我們可以設定Backup JobA給ComputerA,Backup JobB給ComputerB,如此Backup System就知道怎麼幫我們備份這兩台主機。
由於四大要件可組成Backup Job,因此我們可能在不同的Backup Job裡會設定到相同的FileSet、Schedule、Pool,甚至不同Job備份的主機是同一台,只是條件不同。
相同的FileSet: 在較大規模的企業中,同性質的主機可能會有一群,而相同性質的主機可套用相同的備份條件,如此就可共用相同的FileSet定義。
相同的Schedule: Schedule的定義請參考底下Schedule一節。
由於Schedule已定義了Weekly Full,Monthly Full,Yearly Full與Daily Incremental等,因此在Backup Job上就可以定義此Job要採取何種Schedule。
相同的Pool: 這個很好理解,就是備份到同一個Storage上。
Schedule
Schedule的定義有下面幾個比較常被企業所用的,不同的Backup System擁有不盡相同的備份法。一般較具規模的企業會分成Full Backup與Incremental Backup。
Full Backup(完整備份)就是完整地將標的FileSet備份下來,Full Backup通常有Weekly Full,Monthly Full,Yearly Full等,也就是在每週、每月、每年都備份一次完整的資料。完整備份是一道道的防線,讓資料在遇到遺失的事件時,可以在最近一次的完整備份中救回最近期的資料。
Incremental Backup(遞增備份)則是穿插在Full Backup之間的備份,比如Daily Incremental,重點在於比對資料的差異,也就是在較上面我們討論到燒錄了完整備份的光碟後,萬一我需要更新某些零星的資料時,所做的備份。
有的備份系統分得更細,差異備份與遞增備份是不同的機制,這個現在先放著不談。
Client
現今的備份軟體若無支援跨平台,必定無法與市場上其他同質的軟體競爭。作業系統現在有很多種,大家比較知道的就是Microsoft Windows, Linux, IBM AIX, HP UX, Sun Solaris(或講Oracle)等,最基本的Windows與Linux總該要有支援,不然就可以不必考慮了。所以這一節的重點就在於「備份系統應該要支援跨平台」
Pool
Pool就是儲存體。備份用的儲存體大都聚焦在硬碟與磁帶上,用的是最便宜且最大的底層儲存體。備份是一個非常複雜龐大的議題,備份法也是千變萬化,因此儲存體的配置就有不同的方法。大量的硬碟可組成磁碟陣列,大量磁帶可以磁帶館存放。這樣的儲存媒體可以構成很大的儲存空間,供備份資料存放,因此統稱儲存媒體為「池」(Pool)。
Bacula安裝法實作
Hostname IP Address OS Installed Packages Comments
bacula-dir 192.168.1.75 Ubuntu12.04 Director, Catalog, Storage, Console The Backup Server, 100GB Disk attached.
CentOS6-MusicPool 192.168.1.74 CentOS6 Linux FD An instance of general file server backup.
bcclient-win7 192.168.1.5 Windows7 Windows FD An instance of Windows system.
暫留
在開始之前,必須先了解Bacula的架構,這邊筆者畫了一個示意圖,可以較輕易了解整個配置。
安裝步驟:
1. a00ylc00@ubuntu1204-BaculaDir:~$ sudo apt-get install mysql-server
安裝mysql-server並設定root密碼
2. a00ylc00@ubuntu1204-BaculaDir:~$ sudo apt-get install bacula
在此步驟,系統預設就將bacula-client,bacula-fd,bacula-sd,bacula-server,bacula-console等必要套件安裝上。
在此安裝過程中,系統會先要求使用者輸入一次mysql administrator的密碼,也就是在步驟 1. 裡設定的root密碼,然後再要求使用者輸入bacula所使用的table的密碼。這邊請依自己的習慣設定一組密碼。
3. 套件安裝完畢後,在繼續設定之前,必須知道Bacula的設計架構。Bacula須設定四個設定檔,其中有一個設定檔包含所有設定檔所需要的資訊。
此4個設定檔如下所列:
a. /etc/bacula/bconsole.conf 設定console與Director連線的資訊
主要設定"Director段"
b. /etc/bacula/bacula-dir.conf 主設定檔,包含所有Daemon的相關設定
Director段:敘述Director的條件
Job段:敘述所定義的Backup Job或Restore Job
Schedule段:每個Backup Job都會有對應的Schedule(排程)
Client段:敘述所備份標的主機,源於每個Job都需要備份的對象為何
FileSet段:敘述Client端所要備份或還原的檔案為何
Message段:可設定發送mail告知備份情況
Catalog段:敘述在資料庫中的資料編目
c. /etc/bacula/bacula-sd.conf Storage Daemon的描述檔
Storage段:描述此Storage Daemon
Director段:授權給Director以操控Storage Daemon
Device段:定義Storage的種類(如硬碟或磁帶)
Message段:定義哪些Storage訊息要回傳給Director
d. /etc/bacula/bacula-fd.conf File Daemon的描述檔
Client段:描述File Daemon
Director段:授權給Director以操控File Daemon
Message段:定義哪些File Daemon訊息要回傳給Director
光看這樣的對照很難直接上手,不過可以先照著筆者的設定一步一步跟著做,等真正了解每個設定之後,即可照自己的需求來調整。這邊是最痛苦的部份,請保持耐心撐下去。
接下來我們就要實作設定檔的設定了!記得在編修任何設定檔之前,一定要先作檔案的備份,萬一您想嘗試自己的設定,結果將一些細節弄錯了可是不會動的哦。這時候只能再重來一次,所以保留原始檔是最好的方法。
4.
root@ubuntu1204-BaculaDir:~# cp /etc/bacula/bacula-dir.conf /etc/bacula/bacula-dir.conf.ori 備份/etc/bacula/bacula-dir.conf
root@ubuntu1204-BaculaDir:~# vi /etc/bacula/bacula-dir.conf
Director { # 設定Director的主要資訊,標示為紅色
Name = bc-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 1
Password = "dir-password" # Console password
Messages = Daemon
DirAddress = 192.168.1.75
}
# Client (File Services) to backup
Client {
Name = music-fd #設定Client的主要資訊,標示為紅色
Address = 192.168.1.74
FDPort = 9102
Catalog = MyCatalog
Password = "music-password" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
# Generic catalog service
Catalog {
Name = MyCatalog #設定Catalog的主要資訊,標示為紅色
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:sqlite3"; dbaddress = 127.0.0.1; dbport =
dbname = bacula; DB Address = ""; dbuser = "bacula"; dbpassword = "bacula"
} #將原本"bacula"的的引號" "去掉,避免不必要的狀況。
# Definition of file storage device
Storage { #設定Storage的主要資訊,標示為紅色
Name = storage1
# Do not use "localhost" here
Address = 192.168.1.75 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "storage-password"
Device = disk1
Media Type = File
}
JobDefs { #設定JobDefs的主要資訊,標示為紅色
Name = "DefaultJob"
Type = Backup
Level = Incremental
Client = music-fd
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = storage1
Messages = Standard
Pool = Pool1 #要與Pool段相同
Priority = 10
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
Job { #設定Job的主要資訊,標示為紅色
Name = "music-fd"
JobDefs = "DefaultJob"
}
設定完畢後,將Director Daemon Server Restart,此時若有錯誤訊息,代表某些參數並未更改到,記得回頭去修正
root@ubuntu1204-BaculaDir:~# /etc/init.d/bacula-director restart
* Stopping Bacula Director... [ OK ]
* Starting Bacula Director... 06-Oct 03:05 bacula-dir: ERROR TERMINATION at parse_conf.c:479
Config error: Could not find config Resource ubuntu1204-BaculaDir-fd referenced on line 80 : Client=ubuntu1204-BaculaDir-fd #第80行還有Client的名稱不正確
: line 80, col 32 of file /etc/bacula/bacula-dir.conf
Client=ubuntu1204-BaculaDir-fd
[fail]
root@ubuntu1204-BaculaDir:~#
root@ubuntu1204-BaculaDir:~# /etc/init.d/bacula-director restart
* Stopping Bacula Director... [ OK ]
* Starting Bacula Director... [ OK ]
root@ubuntu1204-BaculaDir:~#
若一直有錯誤訊息出現的話,請逐一將錯誤修正直到出現OK為止
到這邊,/etc/bacula/bacula-dir.conf 的設定暫告一段落,接著設定/etc/bacula/bconsole.conf
5.
root@ubuntu1204-BaculaDir:~# vi /etc/bacula/bconsole.conf
Director {
Name = bc-dir
DIRport = 9101
address = 192.168.1.75
Password = "dir-password"
}
再來,則要設定Storage Daemon設定檔。
Storage { # definition of myself
Name = storage1
SDPort = 9103 # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = 192.168.1.75
}
Director {
Name = bc-dir
Password = "storage-password"
}
Device {
Name = disk1
Media Type = File
Archive Device = /media/disk1 #此為事先準備好的備份空間
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
Messages {
Name = Standard
director = bc-dir = all
}
重啟Storage Daemon以載入新設定值
root@ubuntu1204-BaculaDir:~# /etc/init.d/bacula-sd restart
* Stopping Bacula Storage daemon... [ OK ]
* Starting Bacula Storage daemon... [ OK ]
root@ubuntu1204-BaculaDir:~#
接著我們得先設定一部Client當作備份的標的。
我的第一部Client是CentOS系統的
切換至Client,筆者的Client1 Hostname為CentOS6-MusicPool
[root@CentOS6-MusicPool ~]# yum install bacula-client
CentOS的File Daemon就包含在bacula-client的Package裡,因此安裝這個套件即可,系統會再自帶bacula-common這個套件,將必要的工具一併安裝上。同上,記得先備份設定檔才進行編輯。
[root@CentOS6-MusicPool ~]# cp /etc/bacula/bacula-fd.conf /etc/bacula/bacula-fd.conf.ori
[root@CentOS6-MusicPool ~]# vi /etc/bacula/bacula-fd.conf
Director {
Name = bacula-dir
Password = "music-password"
}
FileDaemon { # this is me
Name = music-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/spool/bacula
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
FDAddress = 192.168.1.74 #CentOS並沒有這行,使用CentOS的朋友自行補上
}
Messages {
Name = Standard
director = bc-dir = all, !skipped, !restored
}
[root@CentOS6-MusicPool ~]# /etc/init.d/bacula-fd restart
Shutting down bacula-fd: [ 確定 ]
Starting bacula-fd: [ 確定 ]
[root@CentOS6-MusicPool ~]#
好了!可以開始進行初步的測試了!
切換回Director。
root@ubuntu1204-BaculaDir:~# bconsole
Connecting to Director 192.168.1.75:9101
1000 OK: bc-dir Version: 5.2.5 (26 January 2012)
Enter a period to cancel a command.
*status storage #下指令查看Storage狀態
為了讓Bacula可以存取Storage, 我們要替/media/disk1設定owner, 使Bacula有權使用
指令為>chown bacula:tape /media/disk1
a00ylc00@ubuntu1204-BaculaDir:~$ ls -l /media/
total 4
drwxr-xr-x 3 bacula tape 4096 Oct 7 02:07 disk1
a00ylc00@ubuntu1204-BaculaDir:~$
Automatically selected Storage: storage1
Connecting to Storage daemon storage1 at 192.168.1.75:9103
storage1 Version: 5.2.5 (26 January 2012) x86_64-pc-linux-gnu ubuntu 12.04
Daemon started 06-Oct-12 03:04. Jobs: run=0, running=0.
Heap: heap=270,336 smbytes=17,476 max_bytes=77,700 bufs=51 max_bufs=52
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0
Running Jobs:
No Jobs running.
====
Jobs waiting to reserve a drive:
====
Terminated Jobs:
====
Device status:
Device "disk1" (/media/disk1) is not open.
====
Used Volume status:
====
====
*status client
Automatically selected Client: music-fd 可成功與Client溝通了
Connecting to Client music-fd at 192.168.1.74:9102
music-fd Version: 5.0.0 (26 January 2010) x86_64-unknown-linux-gnu redhat (Final)
Daemon started 06-10��2012 03:57, 0 Jobs run since started.
Heap: heap=135,168 smbytes=11,247 max_bytes=11,394 bufs=44 max_bufs=45
Sizeof: boffset_t=8 size_t=8 debug=0 trace=0
Running Jobs:
Director connected at: 06-10��2012 04:50
No Jobs running.
====
Terminated Jobs:
====
You have messages.
*
在CentOS的系統下,有兩點需要注意的,那就是
1. Daemon要設定為開機就啟動
>chkconfig 2345 bacula-fd on
2. iptables要開放9102 port
編修/etc/bacula/bacula-dir.conf
Pool是我們還沒進行設定的部份
您可能會問,為啥知道要設定這些東西?
好問題,請參考官方網站的pool段
The Pool Resource
Pool {
Name = Pool1
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 10G
Maximum Volumes = 10 #我的disk1有100GB,所以設定10G的卷冊有10卷
Label Format = pool1
Catalog Files = yes
Maximum Volume Jobs = 0
Maximum Volume Files = 0
Volume Use Duration = 0
}
在bacula-sd.conf中若有一個以上的Device定義, 在bacula-dir.conf也要補上相同的Pool對應
Schedule設定:
這個部份我就先使用預設的設定而不另外定義。
Schedule {
Name = "WeeklyCycle"
Run = Full 1st sun at 23:05
Run = Differential 2nd-5th sun at 23:05
Run = Incremental mon-sat at 23:05
}
Messages設定:
Messages {
Name = Standard
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = myylchen@gmail.com = all, !skipped
operator = myylchen@gmail.com = mount #讓系統寄送備份訊息到自己的信箱
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
catalog = all
}
檢查一下Job Define
JobDefs {
Name = "DefaultJob1" #這一整段可以在將來新增Client的時候套用。
Type = Backup
Level = Incremental
Client = music-fd
FileSet = "Full Set" #Full Set是哪些檔案?所以一定要定義,稍候我們要在FileSet段中將備份路徑定義清楚。
Schedule = "WeeklyCycle"
Storage = storage1
Messages = Standard
Pool = Pool1
Priority = 10
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
檢查一下Backup Job
Job {
Name = "music-fd-backup"
JobDefs = "DefaultJob1" #注意要與JobDefs段相同
Client = music-fd
FileSet = "Full Set" #新增的兩段
}
接下來這個動作是在我的MusicPool這部主機上做的,為的是先把將來要做Restore時的環境先準備好。
[root@CentOS6-MusicPool ~]# mkdir /bacula
[root@CentOS6-MusicPool ~]# cd /bacula/
[root@CentOS6-MusicPool bacula]# mkdir restore_files
[root@CentOS6-MusicPool bacula]# ls
restore_files
[root@CentOS6-MusicPool bacula]#
回到Bacula Server上設定Restore Job(/etc/bacula/bacula-dir.conf)
Job {
Name = "music-fd-restore"
Type = Restore
Client = music-fd
FileSet="Full Set"
Storage = storage1
Pool = Pool1
Messages = Standard
Where = /bacula/restore_files/ #剛剛準備好的環境
}
來定義FileSet(Client的備份路徑)
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
}
File = /home #這部主機我想測試備份/home底下的所有檔案
}
a00ylc00@ubuntu1204-BaculaDir:~$ sudo /etc/init.d/bacula-director restart
* Stopping Bacula Director... [ OK ]
* Starting Bacula Director... [ OK ]
a00ylc00@ubuntu1204-BaculaDir:~$
重頭戲上場嘍!終於要開始正式的備份工作了!
a00ylc00@ubuntu1204-BaculaDir:~$ sudo bconsole
Connecting to Director 192.168.1.75:9101
1000 OK: bc-dir Version: 5.2.5 (26 January 2012)
Enter a period to cancel a command.
*run
A job name must be specified.
The defined Job resources are:
1: music-fd-backup
2: BackupCatalog
3: music-fd-restore
Select Job resource (1-3): 1
Run Backup job
JobName: music-fd-backup
Level: Incremental
Client: music-fd
FileSet: Full Set
Pool: Pool1 (From Job resource)
Storage: storage1 (From Job resource)
When: 2012-10-07 00:56:53
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=4
*status dir
bc-dir Version: 5.2.5 (26 January 2012) x86_64-pc-linux-gnu ubuntu 12.04
Daemon started 07-Oct-12 00:50. Jobs: run=1, running=1 mode=0,0
Heap: heap=405,504 smbytes=86,996 max_bytes=87,368 bufs=262 max_bufs=275
Scheduled Jobs:
Level Type Pri Scheduled Name Volume
===================================================================================
Full Backup 10 07-Oct-12 23:05 music-fd-backup pool10001
Full Backup 11 07-Oct-12 23:10 BackupCatalog pool10001
====
Running Jobs:
Console connected at 07-Oct-12 00:52
JobId Level Name Status
======================================================================
4 Full music-fd-backup.2012-10-07_00.56.55_06 is running #痛快!看到這訊息真是開心!
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
3 Full 0 0 Cancel 07-Oct-12 00:56 music-fd-backup #這是稍早被刪掉的Job
====
*
最後,補上一個很必要的好管理工具,bat
a00ylc00@ubuntu1204-BaculaDir:~$ sudo vi /etc/bacula/bat.conf #編修bat.conf
[sudo] password for a00ylc00:
#
# Bacula Administration Tool (bat) configuration file
#
Director {
Name = bc-dir
DIRport = 9101
address = 192.168.1.75
Password = "dir-password" #將該填的填上,就可以執行bat指令開始使用圖形界面管理了!
}
a00ylc00@ubuntu1204-BaculaDir:~$ sudo bat直接將Console的資料以圖形顯現。
圖形界面工具 BAT
Clients列表
Job的狀態
Install Windows Client HowTo
我們來新增一個Win7的Client Node代表Windows系統的一個安裝範例,安裝過程如下:
Backup Server端/etc/bacula/bacula-dir.conf設定如下:
Client {
Name = bcclient-win7-fd
Address = 192.168.1.5
FDPort = 9102
Catalog = MyCatalog
Password = "win7-password" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
Win7端C:\Program Files\Bacula\bacula-fd.conf內容為:
FileDaemon { # this is me
Name = bcclient-win7-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = "C:\\Program Files\\Bacula\\working"
Pid Directory = "C:\\Program Files\\Bacula\\working"
# Plugin Directory = "C:\\Program Files\\Bacula\\plugins"
Maximum Concurrent Jobs = 10
}
#
# List Directors who are permitted to contact this File daemon
#
Director {
Name = bc-dir
Password = "win7-password"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = bcclient-win7-mon
Password = "e1loHtnEY0YjV0Iypclbh0THNbvFq8tmpRfnEWPxeLLW"
Monitor = yes
}
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = bc-dir = all, !skipped, !restored
}
還原測試待續
Reference:
Bacula - install, backup & restore
http://webmodelling.com/webbits/miscell ... acula.aspx
Bacula Installation and Configuration Guide
http://www.bacula.org/3.0.x-manuals/en/ ... nstall.pdf
Bacula Console and Operators Guide
http://www.bacula.org/5.0.x-manuals/en/ ... onsole.pdf
List of backup software
http://en.wikipedia.org/wiki/List_of_backup_software
Backup] Bacula on Ubuntu 12.04 - Chinese Version
Bacula是一套企業級的備份軟體,且Open Source。
這套軟體的設定過程非常複雜,所以在學習過程中有一些困難,但是實際操作後應可漸漸習慣。它的參考文件相當豐富,且備份功能十分完備。
若小型企業在導入備份系統時,覺得市面上的備份方案太貴了,可以採用這套系統,如此軟體的採購就全部省下來了。
若貴公司有這方面的需求,可與筆者聯繫,筆者可以協助導入,提供教育訓練與系統建置的服務。
如果我們僅僅只寫安裝步驟,將指令貼一貼就結束,讀者一定滿腦子的「為什麼」,沒有接觸過備份的朋友一定很快就打退堂鼓,一會就不想學了。因此在開始之前,我們大概了解一下備份的雛型,從抽象的概念到實體設備都大略講解,讓完全未接觸過備份的朋友也能有初步的概念。
備份與儲存是息息相關的,「備份」顧名思義就是將一件東西再做一份備用,以備不時之需。而這邊談的是「資料備份」,也就是將您的資料再多保留一份,留作他日需要的時候再取用。
儲存媒體則有磁片、磁帶、硬碟、光碟、快閃記憶體(如隨身碟、相機的記憶卡)等,儲存媒體的特性就是「存取速度越快、容量越小、貴」且「存取速度越慢、容量越大、便宜」。下面筆者畫了一個作業系統課本裡都有的記憶體金字塔圖,靠近頂端的就是「快、貴、小」;靠近底端的就是「慢、便宜、大」。這圖是筆者簡化過,並依目前較常見的儲存體來分級,為的是讓讀者比較好理解。
Memory Hierarchy
對照:
Tape - 磁帶,容量大,適合巨量資料備份,缺點為速度慢,且必須循序存取。
Hard Disk - 較Tape快些,但還是有馬達、讀寫頭等機械機構,所以仍有其極限。
Flash Memory - 這是筆者加進來的,因為這種儲存媒體沒有機械元件,且可隨機存取,效率比Tape與Hard Disk更好。常見的產品有SSD、相機儲存卡、USB隨身碟等。
Main Memory - 也就是像PC上的記憶體。Main Memory以上的儲存媒體這邊就不再多介紹了,這個與系統有關,不是我們這個主題裡要探討的範圍。主記憶體是用來儲存當下較常使用的資料,比如作業系統...,因為硬碟實在太慢了,所以Main Memory就是幫助提升效率的暫存區。(嘖,就說不介紹了)
Cache - Cache比Main Memory更快。用途就像Main Memory與硬碟之間的關係。
Registor - 在CPU裡的高速小儲存。
而備份,就是「複製一份起來放」的意思,因此不會使用需要充電才能儲存的儲存體,所以Main Memory以上的就可以不必看了,除非是特殊用途或應用。
就一般家庭用電腦的備份而言,我們大多會備份一些自己寫的文件、照片,或是一些具有紀念價值的資料。而備份的方式很簡單,就是將資料燒錄到光碟中,然後將燒錄完成的光碟「好好保存」。過了十年,再取出想要讀取的時候,可能很多朋友會發現,光碟片不能讀了!! 事實上光碟並不是一個很安全的儲存媒體,它的塗料會變質,從外觀完全看不出來。當然硬碟也有可能會壞軌,磁帶也有可能會磁偏移,但總不能不備份了。現在有比較好的NAS(網路儲存)可以用,做個鏡像磁碟陣列就安全很多,所以備份不僅僅只備份(Backup),更要考慮到將來的可回復性(Restorable)。
重要! 資料備份的重點在於「可回復」!
上面所提到的備份,是一個很簡單的例子。
若我所備份的文件昨天才燒錄到光碟上,今天修改了一個字,難道要再備份一片新的光碟嗎? 如果今天文件A新增了一個字串,明天文件B多加了一張圖,後天文件C刪除了,那我該如何備份? 若接下來一整周都沒有再編輯文件,而是新建了幾個檔案,那我又該怎麼整理這些分類?
這些問題,專業的備份軟體都已經有一套完善的理論與機制可以協助使用者解決,所以使用自動化的備份軟體要比我們手工進行備份要完整且方便。如果是小型企業在備份資料上有需求,而尋求SI導入備份系統又太昂貴,可以考慮使用Open Source備份軟體來達到節省成本的目的。
備份四大要件
在開始進入Bacula的主題之前,我們先來挑解一下正規的備份方法。
備份,由四個元素構成,這四個構成元素分別是下列所示:
1. FileSet檔案集,就是一堆檔案的意思 (What,備份什麼)
2. Client用戶端 (Who,備份誰)
3. Schedule排程 (When何時備份)
4. Pool備份池 (Where,備份到哪裡)
看到這邊,一定有人會問,「為什麼沒有Why」?
Why? 為什麼要備份嗎? 這個問題不是應該是我們有這個需求,所以才要求要做備份的嗎!? (翻桌)
為了防止我們珍貴的資料遺失,備份是必要的(Why)。
案例如下
家庭使用者:我的照片為什麼不見了 !? (大哭)
校園使用者:我寫了五天的報告!! 不見了!! (大哭)
小企業使用者:我的FTP硬碟毀了! 謎片資料庫啊!!! (大哭)
中企業使用者:我的FTP硬碟毀了! 謎片資料庫啊!!! (大哭)
大企業使用者:我的FTP硬碟毀了! 謎片資料庫啊!!! (大哭)
由此可知備份的重要! 所以這個「Why」說它不屬於備份的四大要素,卻又是備份需求的開端。
知道四大要件後,開始談備份系統的備份機制。
Backup Job
四大要件即可組成一個Backup Job。
解說:
定義一個Backup Job的時候,我們得告訴Backup System這個Backup Job要做那些事情,如四大要件定義的,備份哪個主機(Client)的什麼資料(FileSet)、何時備份(Schedule)、備份到哪裡(Pool)。因此我們可以設定Backup JobA給ComputerA,Backup JobB給ComputerB,如此Backup System就知道怎麼幫我們備份這兩台主機。
由於四大要件可組成Backup Job,因此我們可能在不同的Backup Job裡會設定到相同的FileSet、Schedule、Pool,甚至不同Job備份的主機是同一台,只是條件不同。
相同的FileSet: 在較大規模的企業中,同性質的主機可能會有一群,而相同性質的主機可套用相同的備份條件,如此就可共用相同的FileSet定義。
相同的Schedule: Schedule的定義請參考底下Schedule一節。
由於Schedule已定義了Weekly Full,Monthly Full,Yearly Full與Daily Incremental等,因此在Backup Job上就可以定義此Job要採取何種Schedule。
相同的Pool: 這個很好理解,就是備份到同一個Storage上。
Schedule
Schedule的定義有下面幾個比較常被企業所用的,不同的Backup System擁有不盡相同的備份法。一般較具規模的企業會分成Full Backup與Incremental Backup。
Full Backup(完整備份)就是完整地將標的FileSet備份下來,Full Backup通常有Weekly Full,Monthly Full,Yearly Full等,也就是在每週、每月、每年都備份一次完整的資料。完整備份是一道道的防線,讓資料在遇到遺失的事件時,可以在最近一次的完整備份中救回最近期的資料。
Incremental Backup(遞增備份)則是穿插在Full Backup之間的備份,比如Daily Incremental,重點在於比對資料的差異,也就是在較上面我們討論到燒錄了完整備份的光碟後,萬一我需要更新某些零星的資料時,所做的備份。
有的備份系統分得更細,差異備份與遞增備份是不同的機制,這個現在先放著不談。
Client
現今的備份軟體若無支援跨平台,必定無法與市場上其他同質的軟體競爭。作業系統現在有很多種,大家比較知道的就是Microsoft Windows, Linux, IBM AIX, HP UX, Sun Solaris(或講Oracle)等,最基本的Windows與Linux總該要有支援,不然就可以不必考慮了。所以這一節的重點就在於「備份系統應該要支援跨平台」
Pool
Pool就是儲存體。備份用的儲存體大都聚焦在硬碟與磁帶上,用的是最便宜且最大的底層儲存體。備份是一個非常複雜龐大的議題,備份法也是千變萬化,因此儲存體的配置就有不同的方法。大量的硬碟可組成磁碟陣列,大量磁帶可以磁帶館存放。這樣的儲存媒體可以構成很大的儲存空間,供備份資料存放,因此統稱儲存媒體為「池」(Pool)。
Bacula安裝法實作
Hostname IP Address OS Installed Packages Comments
bacula-dir 192.168.1.75 Ubuntu12.04 Director, Catalog, Storage, Console The Backup Server, 100GB Disk attached.
CentOS6-MusicPool 192.168.1.74 CentOS6 Linux FD An instance of general file server backup.
bcclient-win7 192.168.1.5 Windows7 Windows FD An instance of Windows system.
暫留
在開始之前,必須先了解Bacula的架構,這邊筆者畫了一個示意圖,可以較輕易了解整個配置。
安裝步驟:
1. a00ylc00@ubuntu1204-BaculaDir:~$ sudo apt-get install mysql-server
安裝mysql-server並設定root密碼
2. a00ylc00@ubuntu1204-BaculaDir:~$ sudo apt-get install bacula
在此步驟,系統預設就將bacula-client,bacula-fd,bacula-sd,bacula-server,bacula-console等必要套件安裝上。
在此安裝過程中,系統會先要求使用者輸入一次mysql administrator的密碼,也就是在步驟 1. 裡設定的root密碼,然後再要求使用者輸入bacula所使用的table的密碼。這邊請依自己的習慣設定一組密碼。
3. 套件安裝完畢後,在繼續設定之前,必須知道Bacula的設計架構。Bacula須設定四個設定檔,其中有一個設定檔包含所有設定檔所需要的資訊。
此4個設定檔如下所列:
a. /etc/bacula/bconsole.conf 設定console與Director連線的資訊
主要設定"Director段"
b. /etc/bacula/bacula-dir.conf 主設定檔,包含所有Daemon的相關設定
Director段:敘述Director的條件
Job段:敘述所定義的Backup Job或Restore Job
Schedule段:每個Backup Job都會有對應的Schedule(排程)
Client段:敘述所備份標的主機,源於每個Job都需要備份的對象為何
FileSet段:敘述Client端所要備份或還原的檔案為何
Message段:可設定發送mail告知備份情況
Catalog段:敘述在資料庫中的資料編目
c. /etc/bacula/bacula-sd.conf Storage Daemon的描述檔
Storage段:描述此Storage Daemon
Director段:授權給Director以操控Storage Daemon
Device段:定義Storage的種類(如硬碟或磁帶)
Message段:定義哪些Storage訊息要回傳給Director
d. /etc/bacula/bacula-fd.conf File Daemon的描述檔
Client段:描述File Daemon
Director段:授權給Director以操控File Daemon
Message段:定義哪些File Daemon訊息要回傳給Director
光看這樣的對照很難直接上手,不過可以先照著筆者的設定一步一步跟著做,等真正了解每個設定之後,即可照自己的需求來調整。這邊是最痛苦的部份,請保持耐心撐下去。
接下來我們就要實作設定檔的設定了!記得在編修任何設定檔之前,一定要先作檔案的備份,萬一您想嘗試自己的設定,結果將一些細節弄錯了可是不會動的哦。這時候只能再重來一次,所以保留原始檔是最好的方法。
4.
root@ubuntu1204-BaculaDir:~# cp /etc/bacula/bacula-dir.conf /etc/bacula/bacula-dir.conf.ori 備份/etc/bacula/bacula-dir.conf
root@ubuntu1204-BaculaDir:~# vi /etc/bacula/bacula-dir.conf
Director { # 設定Director的主要資訊,標示為紅色
Name = bc-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 1
Password = "dir-password" # Console password
Messages = Daemon
DirAddress = 192.168.1.75
}
# Client (File Services) to backup
Client {
Name = music-fd #設定Client的主要資訊,標示為紅色
Address = 192.168.1.74
FDPort = 9102
Catalog = MyCatalog
Password = "music-password" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
# Generic catalog service
Catalog {
Name = MyCatalog #設定Catalog的主要資訊,標示為紅色
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:sqlite3"; dbaddress = 127.0.0.1; dbport =
dbname = bacula; DB Address = ""; dbuser = "bacula"; dbpassword = "bacula"
} #將原本"bacula"的的引號" "去掉,避免不必要的狀況。
# Definition of file storage device
Storage { #設定Storage的主要資訊,標示為紅色
Name = storage1
# Do not use "localhost" here
Address = 192.168.1.75 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "storage-password"
Device = disk1
Media Type = File
}
JobDefs { #設定JobDefs的主要資訊,標示為紅色
Name = "DefaultJob"
Type = Backup
Level = Incremental
Client = music-fd
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = storage1
Messages = Standard
Pool = Pool1 #要與Pool段相同
Priority = 10
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
Job { #設定Job的主要資訊,標示為紅色
Name = "music-fd"
JobDefs = "DefaultJob"
}
設定完畢後,將Director Daemon Server Restart,此時若有錯誤訊息,代表某些參數並未更改到,記得回頭去修正
root@ubuntu1204-BaculaDir:~# /etc/init.d/bacula-director restart
* Stopping Bacula Director... [ OK ]
* Starting Bacula Director... 06-Oct 03:05 bacula-dir: ERROR TERMINATION at parse_conf.c:479
Config error: Could not find config Resource ubuntu1204-BaculaDir-fd referenced on line 80 : Client=ubuntu1204-BaculaDir-fd #第80行還有Client的名稱不正確
: line 80, col 32 of file /etc/bacula/bacula-dir.conf
Client=ubuntu1204-BaculaDir-fd
[fail]
root@ubuntu1204-BaculaDir:~#
root@ubuntu1204-BaculaDir:~# /etc/init.d/bacula-director restart
* Stopping Bacula Director... [ OK ]
* Starting Bacula Director... [ OK ]
root@ubuntu1204-BaculaDir:~#
若一直有錯誤訊息出現的話,請逐一將錯誤修正直到出現OK為止
到這邊,/etc/bacula/bacula-dir.conf 的設定暫告一段落,接著設定/etc/bacula/bconsole.conf
5.
root@ubuntu1204-BaculaDir:~# vi /etc/bacula/bconsole.conf
Director {
Name = bc-dir
DIRport = 9101
address = 192.168.1.75
Password = "dir-password"
}
再來,則要設定Storage Daemon設定檔。
Storage { # definition of myself
Name = storage1
SDPort = 9103 # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = 192.168.1.75
}
Director {
Name = bc-dir
Password = "storage-password"
}
Device {
Name = disk1
Media Type = File
Archive Device = /media/disk1 #此為事先準備好的備份空間
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
Messages {
Name = Standard
director = bc-dir = all
}
重啟Storage Daemon以載入新設定值
root@ubuntu1204-BaculaDir:~# /etc/init.d/bacula-sd restart
* Stopping Bacula Storage daemon... [ OK ]
* Starting Bacula Storage daemon... [ OK ]
root@ubuntu1204-BaculaDir:~#
接著我們得先設定一部Client當作備份的標的。
我的第一部Client是CentOS系統的
切換至Client,筆者的Client1 Hostname為CentOS6-MusicPool
[root@CentOS6-MusicPool ~]# yum install bacula-client
CentOS的File Daemon就包含在bacula-client的Package裡,因此安裝這個套件即可,系統會再自帶bacula-common這個套件,將必要的工具一併安裝上。同上,記得先備份設定檔才進行編輯。
[root@CentOS6-MusicPool ~]# cp /etc/bacula/bacula-fd.conf /etc/bacula/bacula-fd.conf.ori
[root@CentOS6-MusicPool ~]# vi /etc/bacula/bacula-fd.conf
Director {
Name = bacula-dir
Password = "music-password"
}
FileDaemon { # this is me
Name = music-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/spool/bacula
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
FDAddress = 192.168.1.74 #CentOS並沒有這行,使用CentOS的朋友自行補上
}
Messages {
Name = Standard
director = bc-dir = all, !skipped, !restored
}
[root@CentOS6-MusicPool ~]# /etc/init.d/bacula-fd restart
Shutting down bacula-fd: [ 確定 ]
Starting bacula-fd: [ 確定 ]
[root@CentOS6-MusicPool ~]#
好了!可以開始進行初步的測試了!
切換回Director。
root@ubuntu1204-BaculaDir:~# bconsole
Connecting to Director 192.168.1.75:9101
1000 OK: bc-dir Version: 5.2.5 (26 January 2012)
Enter a period to cancel a command.
*status storage #下指令查看Storage狀態
為了讓Bacula可以存取Storage, 我們要替/media/disk1設定owner, 使Bacula有權使用
指令為>chown bacula:tape /media/disk1
a00ylc00@ubuntu1204-BaculaDir:~$ ls -l /media/
total 4
drwxr-xr-x 3 bacula tape 4096 Oct 7 02:07 disk1
a00ylc00@ubuntu1204-BaculaDir:~$
Automatically selected Storage: storage1
Connecting to Storage daemon storage1 at 192.168.1.75:9103
storage1 Version: 5.2.5 (26 January 2012) x86_64-pc-linux-gnu ubuntu 12.04
Daemon started 06-Oct-12 03:04. Jobs: run=0, running=0.
Heap: heap=270,336 smbytes=17,476 max_bytes=77,700 bufs=51 max_bufs=52
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0
Running Jobs:
No Jobs running.
====
Jobs waiting to reserve a drive:
====
Terminated Jobs:
====
Device status:
Device "disk1" (/media/disk1) is not open.
====
Used Volume status:
====
====
*status client
Automatically selected Client: music-fd 可成功與Client溝通了
Connecting to Client music-fd at 192.168.1.74:9102
music-fd Version: 5.0.0 (26 January 2010) x86_64-unknown-linux-gnu redhat (Final)
Daemon started 06-10��2012 03:57, 0 Jobs run since started.
Heap: heap=135,168 smbytes=11,247 max_bytes=11,394 bufs=44 max_bufs=45
Sizeof: boffset_t=8 size_t=8 debug=0 trace=0
Running Jobs:
Director connected at: 06-10��2012 04:50
No Jobs running.
====
Terminated Jobs:
====
You have messages.
*
在CentOS的系統下,有兩點需要注意的,那就是
1. Daemon要設定為開機就啟動
>chkconfig 2345 bacula-fd on
2. iptables要開放9102 port
編修/etc/bacula/bacula-dir.conf
Pool是我們還沒進行設定的部份
您可能會問,為啥知道要設定這些東西?
好問題,請參考官方網站的pool段
The Pool Resource
Pool {
Name = Pool1
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 10G
Maximum Volumes = 10 #我的disk1有100GB,所以設定10G的卷冊有10卷
Label Format = pool1
Catalog Files = yes
Maximum Volume Jobs = 0
Maximum Volume Files = 0
Volume Use Duration = 0
}
在bacula-sd.conf中若有一個以上的Device定義, 在bacula-dir.conf也要補上相同的Pool對應
Schedule設定:
這個部份我就先使用預設的設定而不另外定義。
Schedule {
Name = "WeeklyCycle"
Run = Full 1st sun at 23:05
Run = Differential 2nd-5th sun at 23:05
Run = Incremental mon-sat at 23:05
}
Messages設定:
Messages {
Name = Standard
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = myylchen@gmail.com = all, !skipped
operator = myylchen@gmail.com = mount #讓系統寄送備份訊息到自己的信箱
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
catalog = all
}
檢查一下Job Define
JobDefs {
Name = "DefaultJob1" #這一整段可以在將來新增Client的時候套用。
Type = Backup
Level = Incremental
Client = music-fd
FileSet = "Full Set" #Full Set是哪些檔案?所以一定要定義,稍候我們要在FileSet段中將備份路徑定義清楚。
Schedule = "WeeklyCycle"
Storage = storage1
Messages = Standard
Pool = Pool1
Priority = 10
Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
檢查一下Backup Job
Job {
Name = "music-fd-backup"
JobDefs = "DefaultJob1" #注意要與JobDefs段相同
Client = music-fd
FileSet = "Full Set" #新增的兩段
}
接下來這個動作是在我的MusicPool這部主機上做的,為的是先把將來要做Restore時的環境先準備好。
[root@CentOS6-MusicPool ~]# mkdir /bacula
[root@CentOS6-MusicPool ~]# cd /bacula/
[root@CentOS6-MusicPool bacula]# mkdir restore_files
[root@CentOS6-MusicPool bacula]# ls
restore_files
[root@CentOS6-MusicPool bacula]#
回到Bacula Server上設定Restore Job(/etc/bacula/bacula-dir.conf)
Job {
Name = "music-fd-restore"
Type = Restore
Client = music-fd
FileSet="Full Set"
Storage = storage1
Pool = Pool1
Messages = Standard
Where = /bacula/restore_files/ #剛剛準備好的環境
}
來定義FileSet(Client的備份路徑)
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
}
File = /home #這部主機我想測試備份/home底下的所有檔案
}
a00ylc00@ubuntu1204-BaculaDir:~$ sudo /etc/init.d/bacula-director restart
* Stopping Bacula Director... [ OK ]
* Starting Bacula Director... [ OK ]
a00ylc00@ubuntu1204-BaculaDir:~$
重頭戲上場嘍!終於要開始正式的備份工作了!
a00ylc00@ubuntu1204-BaculaDir:~$ sudo bconsole
Connecting to Director 192.168.1.75:9101
1000 OK: bc-dir Version: 5.2.5 (26 January 2012)
Enter a period to cancel a command.
*run
A job name must be specified.
The defined Job resources are:
1: music-fd-backup
2: BackupCatalog
3: music-fd-restore
Select Job resource (1-3): 1
Run Backup job
JobName: music-fd-backup
Level: Incremental
Client: music-fd
FileSet: Full Set
Pool: Pool1 (From Job resource)
Storage: storage1 (From Job resource)
When: 2012-10-07 00:56:53
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=4
*status dir
bc-dir Version: 5.2.5 (26 January 2012) x86_64-pc-linux-gnu ubuntu 12.04
Daemon started 07-Oct-12 00:50. Jobs: run=1, running=1 mode=0,0
Heap: heap=405,504 smbytes=86,996 max_bytes=87,368 bufs=262 max_bufs=275
Scheduled Jobs:
Level Type Pri Scheduled Name Volume
===================================================================================
Full Backup 10 07-Oct-12 23:05 music-fd-backup pool10001
Full Backup 11 07-Oct-12 23:10 BackupCatalog pool10001
====
Running Jobs:
Console connected at 07-Oct-12 00:52
JobId Level Name Status
======================================================================
4 Full music-fd-backup.2012-10-07_00.56.55_06 is running #痛快!看到這訊息真是開心!
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
3 Full 0 0 Cancel 07-Oct-12 00:56 music-fd-backup #這是稍早被刪掉的Job
====
*
最後,補上一個很必要的好管理工具,bat
a00ylc00@ubuntu1204-BaculaDir:~$ sudo vi /etc/bacula/bat.conf #編修bat.conf
[sudo] password for a00ylc00:
#
# Bacula Administration Tool (bat) configuration file
#
Director {
Name = bc-dir
DIRport = 9101
address = 192.168.1.75
Password = "dir-password" #將該填的填上,就可以執行bat指令開始使用圖形界面管理了!
}
a00ylc00@ubuntu1204-BaculaDir:~$ sudo bat直接將Console的資料以圖形顯現。
圖形界面工具 BAT
Clients列表
Job的狀態
Install Windows Client HowTo
我們來新增一個Win7的Client Node代表Windows系統的一個安裝範例,安裝過程如下:
Backup Server端/etc/bacula/bacula-dir.conf設定如下:
Client {
Name = bcclient-win7-fd
Address = 192.168.1.5
FDPort = 9102
Catalog = MyCatalog
Password = "win7-password" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
Win7端C:\Program Files\Bacula\bacula-fd.conf內容為:
FileDaemon { # this is me
Name = bcclient-win7-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = "C:\\Program Files\\Bacula\\working"
Pid Directory = "C:\\Program Files\\Bacula\\working"
# Plugin Directory = "C:\\Program Files\\Bacula\\plugins"
Maximum Concurrent Jobs = 10
}
#
# List Directors who are permitted to contact this File daemon
#
Director {
Name = bc-dir
Password = "win7-password"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = bcclient-win7-mon
Password = "e1loHtnEY0YjV0Iypclbh0THNbvFq8tmpRfnEWPxeLLW"
Monitor = yes
}
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = bc-dir = all, !skipped, !restored
}
還原測試待續
Reference:
Bacula - install, backup & restore
http://webmodelling.com/webbits/miscell ... acula.aspx
Bacula Installation and Configuration Guide
http://www.bacula.org/3.0.x-manuals/en/ ... nstall.pdf
Bacula Console and Operators Guide
http://www.bacula.org/5.0.x-manuals/en/ ... onsole.pdf
List of backup software
http://en.wikipedia.org/wiki/List_of_backup_software