2009年2月14日 星期六

使用bacula備份


底下文章來源自
http://linux.chinaunix.net/docs/2006-08-03/2382.shtml

手頭有三台機器,為了安全,就打算做一個網路備份,讓這三台機器互相備份一些重要文檔。上網逛了一會,發現bacula(www.bacula.org)挺符合自己的要求。

bacula採用模組化設計,採用c/s構架,理論上可以把任意n台主機的資料備份到任意n台中,而你不需要在每台機器上都寫一個配置檔控制他們運作,所有主要的工作都在一台director上控制。登錄上director你就可以知道什麼備份正在運行,什麼備份成功了,什麼備份失敗了,所有的log也會集中到你指定的地方,讓管理工作更簡單一點。恢復的時候也很簡單,簡單運行幾個命令你就可以把指定的備份恢復。支持完全備份,差異備份,增量備份;支援把備份寫到硬碟檔中,也支援寫到磁帶中。支持平臺相當多,設置包括win平臺(備份win,還不支援備份到win)。當然也有一些缺點,比如對併發備份支持未經徹底測試,作者宣稱最好不要嘗試,除非你自己經過測試。還有一點就是文檔中沒有一個quick start。文檔太詳細了點,沒有點耐心讀不完。

1、前期準備
bacula有三個模組組成。一個是Director,用於指揮整個系統運行,job schedule,通知另外兩個模組工作。一個是Storage Daemon,它是存儲端,負責把網路中傳來的資料備份到本機,恢復的時候負責把資料傳出去。最後一個是File Daemon,備份時把檔傳出,恢復時接受資料並恢復。其實上面的三個模組並不能讓bacula運行,另外一個模組是資料庫模組。這個模組可以通過 SQLite(編譯進bacula),也可以使用MySql和PostgreSql,作者推薦的是mysql。還需要一些第三方庫才能編譯:GZIP和 Readline。文檔中沒有說明,但其實還需要另外一個軟體才能保證正常運行:ntp。因為差異備份和增量備份都依賴於檔修改時間來決定是否備份。單機備份問題不大,網路備份就需要考慮各個主機的時間差異了。所以我推薦所有主機每天運行兩次ntpdate來調準時間。如果你在sjtu網路裏面,可以使用 dns.sjtu.edu.cn來調校時間。
如果你使用的是磁帶機備份,還需要檢查一下你的磁帶機是否被支持。而且最好去閱讀文檔中的Understanding Pools, Volumes and Labels一節。否則配置的時候你會搞得暈乎乎的。

2、編譯
編譯過程很簡單,文檔也很詳細,就不具體介紹了。注意一點是被備份機器上可以使用--enable-client-only編譯。

3、資料庫建立
下面說說mysql的建立過程。首先在代碼根目錄中cd src/cats/
./grant_mysql_privileges
./create_mysql_database
./make_mysql_tables
如果mysql不是在本機上,可以增加-h參數指定。默認採用空密碼的root用戶,可以用-p參數使其採用密碼驗證。如果要採用其他用戶就只能修改腳本了,很簡單的。
默認建立的bacula用戶,而且是空密碼。推薦還是修改密碼。
bacula可以使用任意多的資料庫,也就是說你可以使用兩個資料庫,然後再讓這兩個數據庫互相備份。

4、運行File Daemon(fd)
配置前先說明一點需要注意的,配置中指定主機位址時,最好使用ip,我配置時使用主機名貌似不可以。。。而且要是對外的ip,用127.0.0.1不行fd 運行在被備份主機上。配置相當簡單,指定哪個Director可以運行調度它,密碼是什麼,fd的名字,工作目錄,log往哪里發就可以了。修改修改標配就可以了。

5、運行Storage Daemon(sd)
sd運行在接受備份的機器上。配置也相當簡單,只是比fd多出了一個 device用於指定使用什麼硬體備份資料。可以把多個資料備份到一個device,如果是磁帶機備份bacula在恢復的時候會告訴你要使用哪個磁帶。因為我使用的是檔備份的模式,所以就給每個備份配置一個device,把不同的備份放到不同目錄去,下面是一個簡單檔備份device配置
Device {
Name = dbdev
Media Type = File #這個隨便寫,但是在配置Director中的Storage時,必須寫一樣的
Archive Device = /var/bak/db #備份到哪個目錄,必須存在
LabelMedia = yes; # 自動label
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}

6、運行Director(dir)
這個配置最麻煩,因為所有配置都集中到這裏,包括備份工作調度,資料庫配置,fd和sd協作配置都在這裏。
Director專案的配置不說了,很簡單
Client專案告訴dir去哪里找被備份機器
Client {
Name = dbfd #必須跟fd配置的名字相同
Address = 202.120.x.x
FDPort = 9102
Catalog = 225catalog #使用哪個資料庫存儲資訊
Password = "6662f353d83dc85013690aefc00f" # 與fd配置相同即可
AutoPrune = yes # 自動清除過期的Jobs/Files
}
Storage專案告訴dir去哪里找接受備份的機器
Storage {
Name = dbsd #與sd配置相同
Address = 202.120.x.x
SDPort = 9103
Password = "6662f353d83dc85013690aefc00f"
Device = dbdev #必須在sd中存在
Media Type = File #必須與sd中相應device相同
}
Schedule項目告訴dir何時調度備份,比較獨立,可以在不同的job中重用
Schedule {
Name = dbscd
Run = Level=Full mon at 7:00 #在週一7點作一次全備份
Run = Level=Full fri at 7:00 #在週五7點作一次全備份
Run = Level=Differential sat at 7:00 #在週六7點作一次差異備份
Run = Level=Differential sun at 7:00 #在周日7點作一次差異備份
Run = Level=Differential tue-thu at 7:00 #在週二到週四7點作差異備份
}
當然可以schedule還可以配置很多東西,比如增量備份以及更靈活的時間調度。可以參考文檔。
FileSet專案告訴dir應該備份什麼檔,不應該備份什麼檔
FileSet {
Name = dbfs
Include = compression=GZIP { #備份運行fd機器上的/var/db目錄,用gzip
壓縮,
/var/db/
}
Exclude = { #不包括所有的.log文件
*.log
}
}
FileSet也可以靈活配置,甚至可以在job運行時才指定備份檔案
Catalog告訴dir去哪里找資料庫
Catalog {
Name = dbcatalog
dbname = bacula
user = bacula
password = xxxxxxxxx
DB Address = 202.120.x.x #不要用localhost
DB Port = 3306
}
Pool告訴dir使用哪個Pool備份資料,這個概念比較搞,到配置job的時候會清晰一點。
Pool{
Name = dbpool
Pool Type = Backup
Maximum Volume Jobs = 1 #每次備份使用一個檔
Recycle = yes #重複使用
AutoPrune = yes #自動清除
Volume Retention = 15 days #備份保留時間
Maximum Volumes = 30 #最多保存多少個檔
Recycle Current Volume = yes #使用最近過期的檔存儲新備份
#檔如何命名,下面的格式會產生如下的命名形式db-2004-03-19-id20
Label Format =
"db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}"
}
Message項目告訴dir如何保存log,以及保存格式
Messages {
Name = Standard
# mailcommand = "/usr/local/bacula/bin/smtp -h 202.120.x.x -f \"\(Bacula\)
%r\
" -s \"Bacula: %t %e of %c %l\" %r"
# operatorcommand = "/usr/local/bacula/bin/smtp -h 202.120.x.x -f
\"\(Bacula\)
%r\" -s \"Bacula: Intervention needed for %j\" %r"
# mail = root@202.120.x.x = all, !skipped
# operator = root@202.120.x.x = mount
# console = all, !skipped, !saved
#
# WARNING! the following will create a file that you must cycle from
# time to time as it will grow indefinitely. However, it will
# also keep all your messages if they scroll off the console.
#
append = "/var/log/bacula.log" = all, !skipped
append ="/var/log/bacula.err.log" = error, warning, fatal
}
我保留了兩份log,一份包括所有資訊,一份只包括錯誤資訊
可以看到,bacula支援把log發到郵箱中~~被我注釋掉了。
Job是上面所有配置的一個組合,給用戶最大的靈活性配置
Job {
Name = dbjob
Type = Backup #還有restore之類的類型,也有一些其他選項,可以實現一些很有意思的功能
Level = Full #默認備份程度,schedule中的配置會覆蓋這裏的選擇
Client = dbfd
FileSet = dbfs
Messages = Standard
Pool = dbpool
Storage = dbsd
Schedule = dbscd #如果沒有指定schedule,默認不運行,可以通過console
調度
}
還有一個counter的配置。。不配置他也能運行,不說了

7、console運行
console是你動態管理bacula的視窗,配置很簡單。運行console可以實現很多很有價值的管理活動。具體可以參考文檔說明。

8、讓整個系統運行。
沒什麼好說的,只要配置正確,就沒有什麼挫折。不能正常運行就去看看log,bacula的log非常詳細。

9、性能和穩定性。
性能不錯,瓶頸明顯在帶寬,cpu佔用不高(不使用gizp)。穩定性尚不清楚,據作者說非常好。穩定運行一年半載不成問題。

10、有趣的工作。
用bacula你可以實現一個額外的功能,類似tripwire檔系統檢查機制。具體看文檔。
我說了很多具體看文檔~~~~bacula的文檔確實很不錯,很詳實,如果你需要借重它來備份,多看看不會錯。
11、the end

2009年2月1日 星期日

波斯丰采

這次春節在老婆民雄的娘家不到100公尺處發現了一處開滿各色不同品種的波斯菊花園,雖然有好幾片的花株都已枯萎,但仍不失其生命的丰采。
















Nikon FA / Tokina AT-X Macro 90mm f2.5 / REALA 100

2008年8月28日 星期四

兄妹情照片入選硬攝影首頁






2008年7月12日 星期六

東眼山一日遊

在東眼山遇到的第一隻美麗的生物-台灣青蛇。
話說這隻青蛇趁我在林道旁的大岩石上享用午餐時,偷摸摸的溜到我的腳下。後來小小跟牠玩了一下,孩子們看得入神,這是他們第一次在野外遇見活生生的台灣蛇類,印象鐵定很深;就像我永遠記得我小時候念幼稚園時,在回家的田間小徑上遇到的那隻恐怖大蟒蛇一樣。


遇到的第一隻超古錐的毛毛蟲(大透翅天蛾幼蟲)


在化石區遇到的第二隻穿著很愛現的毛毛蟲
(長斑擬燈蛾幼蟲)


第三隻看起來讓人不敢親近的毛毛蟲(
黑端豹斑蝶幼蟲)


林道旁的第三等衛星控制點

兄妹情之我們一起來篇

一起騎車


一起打果汁


一起洗衣服


一起拖地

待續...

兄妹情之牽小手篇

打從相陵一出生,這對小兄妹不知怎麼地,總愛在睡覺時一定要牽彼此小手,不信?!請看...



2008年5月31日 星期六

我的第一批木雕小木偶

終於利用好幾個孩子們睡著後的夜晚及週休假期,把去年在新竹國小收集來的九芎樹枝,和在垃圾場撿來的床具木料,或雕或鋸地先完成了幾個木偶,孩子們看到都好愛喔!雖然九芎堅硬的木質,讓我這個一切憑感覺的初學者吃足了苦頭,但過程卻也是趣味十足。看著最後完成的作品和孩子們愛不釋手的模樣,自己還是會偷偷地竊笑不已呢!

至於木偶裡怎麼似乎還缺一個奕德的身影,因為目前還在趕工中,請大家拭目以待吧!

2008年3月27日 星期四

YA~妹妹尿在便盆了!

今天晚上洗澡前,相陵說要尿尿,雖然有先前無數次失敗的經驗,但媽咪還是迅速地將便盆抱到相陵的面前,請她自己脫掉褲子及尿布坐上便盆,過了一會,媽咪竟然聽到噓噓的聲音了,而且還很長很久耶!走進便盆一看,YA~相陵尿在便盆了,真的好大一泡尿ㄚ!

於是,相陵興奮地跑到書房找爸比,告訴我這個人生最偉大的事件,然後用她的小手牽著我的大手,引著我到事發現場目睹這珍貴的一刻!當然我這個做老爹也毫不吝嗇給予相陵我最熱情的擁抱與香吻。

孩子~你終於做到了!愛妳~愛妳~愛妳喔!

附記:由於事發當晚爸比我錯過了這歷史珍貴的第一時刻,所以隔天一大早起床,相陵便抱著便盆到書房當場尿給我看,以補前一晚老爹的遺憾;而我也很配合地拿起DV拍了起來,沒想到相陵真的也很認真的尿了一大泡回應老爹,哈哈!

2008年3月24日 星期一

飛吧!乘載著愛的紙鳶......

今天一早送奕德進幼兒園,玉華老師笑著問我是不是有教過奕德怎麼放風箏?於是回想了一下,記得只有在月初時帶奕德去清仁家,麻煩清仁媽咪幫奕德的鼻子做溫灸的那天下午教過一次......

接著,老師說上禮拜帶孩子們去中華大學操場放風箏時,發現奕德把我們一起做的風箏放得很高、很棒、很穩,讓她覺得非常的驚訝;老師又接著說,那天有位班上的女孩穿著媽媽的鞋子來上課,因為鞋子太大了,結果在前往中華大學野餐的路上不時地絆到異物,無法前行。貼心的奕德便跟在女同學的身旁,一見狀,便蹲下身去幫她把絆住的異物解開;聽得我這個不爭氣的老爹又不自覺感動地哽咽了起來~

孩子ㄚ!請你一定要記住,正因為心中有愛,你的風箏才飛得比較高、比較穩;正因為心中有愛,你才有繼續感動這個世界的力量,也才能飛出屬於你人生的一條向陽之路。

2008年3月23日 星期日

學能終於婚了

今晚,學能這小子終於婚了,挑了一個機車的禮拜天晚上請客,還真是讓眾多外縣市的同學覺得有點不夠意思耶!

不過呢,看到學能娶到一位氣質出眾的美嬌娘,還真是替他高興呢!聽說悅菁還是位國小老師,難怪別人的花童是兩位,他們卻是一整群的花童,相信她一定是位很得孩子緣的好老師!

衷心地祝福學能和悅菁

白頭偕老 永浴愛河

2008年3月22日 星期六

爸爸,誰被劈啊?!

中午看完中醫,跑到演藝路上的魏媽媽素食館買完中餐,在準備回家的路上遇到以前同事Peter的太太,跟他寒喧了一會,得知在對岸工作的Peter昨天才飛回台灣參與今天總統大選的投票;心想,這才是正港的愛台灣啦!

回到家便馬上跟老婆報告這件事,沒想到才講到一半,在一旁的奕德突然插了一句話進來-「爸爸,你說誰被劈啊?!」-正當我丈二金剛摸不著兒子的問題時,老婆卻在一旁大笑了起來,對著兒子說:「Peter是爸爸以前同事的英文名字,不是誰被劈啦!」

真是挖哩勒......看來我上禮拜天做風箏骨架時,左手拇指不小心被"刀馬"(四縣客語發音)劈到縫了兩針這件事,在兒子的心裡留下了深深的記憶......

2008年3月20日 星期四

不錯的免費計數器

剛剛到網路上搜尋了一下提供免費計數器的網站,發現了一個樣式都還不錯看的站台-HitCounterSit.com-首先,先挑一個您喜歡的計數器樣式,再依序填入您網站的URL、希望開始計數的數字、計數器的位數以及計數的方式(以造訪者的IP唯一值,或是您計數器所在網頁被點閱的次數)後,點按下方的【CLICK HERE GET YOUR COUNTER CODE!】按鈕,便會出現相關的HTML CODE,將其複製並貼到您網頁希望計數器出現的位置(以HTML編輯)上即可。

足感心的奕德

今晚,相陵入睡前耍了一下小脾氣,等她安定了一點,向來一定要睡在妹妹隔壁的奕德動作很輕柔地拍哄著相陵入睡,確定相陵睡著後,奕德才慢慢地將他身上的薄被幫相陵蓋上,細膩的過程看在眼裡,讓我這個做爹的好感動,喉間不禁哽咽了起來....

我的好兒子,謝謝你!

322 ,為我們的下一代投下這一票

希望大家都能踴躍地為我們的下一代投下這一票!

延伸閱讀:

  1. 文化人談心中的領導人 龍應台:台灣要怎樣的總統
  2. 台灣不需要一個「我被欺負」的政府
  3. 執政無能,人民不能手軟


2008年3月16日 星期日

觀音荷之曲

這是之前我還是羅漢腳時,一大清早四點起床,騎著豪爽150從新竹直奔桃園觀音拍的作品,在拍攝的過程裡剛好遇到攝影學會的前輩們正人手一隻,拿著釣竿在"喬"荷花的角度,我個人是很不喜歡這樣拍照的方式啦!隨緣的東西比較美,當下看到的景物能跟自己"來電",並用自己認為想要表現的方式拍下來才是真正我想要的照片,而這樣的作品通常都是最耐看的,且自己面對自己的作品時才不會有種不踏實的感覺,這是我個人接觸攝影以來的唯一堅持。

如果你要問我下面的作品中我最喜歡哪一張,我會選最後一張"羞澀的甜蜜",至於為何會取這樣的名字,那就請您發揮您豐富的想像力吧!呵~















2008年3月15日 星期六

新埔佝僂老農

剛到新竹工作的前一、兩年,常常背著相機四處在新竹的各鄉鎮探險,藉由這樣的機會,讓我這個來自屏東的客家遊子對這個絕對陌生卻又處處流露濃濃客家風情的異鄉,有更加直接的認識與體驗。

那天,新竹的風很冷,天空飄著細雨,在往新埔拍攝古厝的途中,一個不起眼的田間角落,發現了一位杵著柺杖、弓著背的老翁,正吃力但很熟練的整理著一堆一堆的稻草,這個充滿生命張力的情景立刻吸引了我原本游離的目光,於是乎我像個孩子般懷著一份好奇且戒慎的心情走近這個情境中巨大生命的主體,嘗試著接近他並與他交談,心中預想著是否從這佝僂的身影中能找到些什麼......

「阿伯!您怎麼一個人在這做呢?」我說,

老翁:「哪有按好命?!...年輕人,你姓什麼呀?」

「阿伯,我姓李,李登輝的李。」

「阿伯,那您姓什麼?」

老翁:「我忘記了!」

「忘記了?!...那您多大年紀了?」

「我也無記得了!」老翁說,

「那您的孩子呢?還在新竹嗎?」我很不識趣地問著,

老翁:「無提沒著!」

「無提沒著?!」


我一臉狐疑地看著他,心想,眼前這位老人家所回應的話似乎與他外在形象所給人的感覺幾乎是相互呼應的,沒有姓名、沒有年紀,更不想提起任何曾經與他親近過的人事物,於是乎,我開始構思如何用鏡頭將這位老翁今天所呈獻給我的感覺忠實的記錄下來。之後,我們聊新埔的過去,實著讓我豐富了這滿滿的一個小時。

拍攝方式: 那天的天氣陰陰暗暗的,非常切近當下的情境,於是,我將事先裝好的Tmax-100黑白底片增感800度拍攝,刻意在構圖上將主體前方的空間縮短,以造成一種感傷、落寞及接近人生邊際的感覺。而其中下面這張作品,則極盡誇張之手法,貼近以擴大主角所堆疊整理出的稻草,將主體即將離去的背影置於直立式構圖中的頂端,以呈現一種結束、滄桑及惆悵的氣氛。

2007年11月17日 星期六

邁入第八年的銀狼號