2008年3月14日 星期五

完整備份Cafe BBS

以前都是在crontab裡面放個shell script執行每月備份,不過備份的時間都是挑每月四號凌晨四點人少的時候,直接對/home/bbs整個tar czf起來,不過這次想要把整個程式徹底關掉(使用者趕出門)然後再備份(謎之音:您多慮了,沒有人這時候亂搞)。所以就要殺掉bbsd這程式,最近越來越迷戀長指令了。是男人都知道,屌,就是越長越好啊~

ps -ax | grep bbsd | cut -c1-5 | xargs kill

 

因為bbsd會跑出很多分身,所以乾脆直接找出(grep)他們的pid,然後擷取出前面數字(因為排版會填空白對齊,所以cut -d" "無效),用xargs餵給kill,一行指令內殺光所有bbsd,然後咖啡店就倒了。

不過這樣還有幾個standalone的程式還在醉生夢死,所以要單獨一槍一個幹掉他們。主要就是gemd、bpop3、bguard、camera、account、xchat,還好啦,也可以研發一顆銀子彈一槍幹掉所有程式,核心就是

grep bbs

因為程式都是在/home/bbs下面。哈哈!

接下來備份用tar就可以了,此時系統其實就跟單人系統沒有二樣,你可以擁有幾乎全部效能來壓縮。做完備份的tar檔案當然不可以留在主機裡,要拷到遠端的另一台主機,或是用燒錄機備份出來,不然這是哪門子掩耳盜鈴的備份工作啊!要拷檔案有cp指令,不過我們這裡不用這個指令。我簡介一下ssh的子系統scp,secure copy。大家都很熟悉cp source target這個語法,scp其實也沒太大差別,只是有個語法user@hostname:directory,所以可以從本機下

scp ./source_file remote_user@hostname:home_directory

或是從遠端主機下達

scp bak_user@bak_host:path_to_backup_file .

如果ssh的 port不是內定的22,用前置-P port_num URL 來說明用哪個port進入該主機,額外有價值的參數是

-4 強制使用ipv4
-v 列印出很多觀賞性質的進度

然後當成功打開ssh的連線,就會問你密碼,只要你完成ssh連接,就會看到拷貝進度,完成後自動斷線。

至於恢復bbs運作其實沒啥了不起,找到/home/bbs/bin/bbsd激活一下,然後切換成bbs的身份,對camera電擊一下,bbs又恢復心跳了。不然還有終極絕招:其實crontab與script都寫好了,reboot就可以了(不過這樣就遜掉了)。

不過我說啊,沒事不要放一大堆情書在別人的硬碟裡面好嗎?你泡馬子我又沒有分,還要幫你備份保管情書,有沒有道義啊?是不是兄弟啊?不過這是玩笑話,純粹是因為這是DMA66的硬碟,所以tar起來超慢的牢騷。

沒有留言: