Snapshot型 增量備份 backup - Linux

Daniel avatar
By Daniel
at 2007-05-11T12:59

Table of Contents

最近一直在煩惱linux 的備份方案
由於備份起來 要能夠支援即時備援 所以弄起來特別煩惱
由於公司是使用NFS做檔案集中管理 為了怕NFS server 檔案故障
所以需要做每日 每天 甚至每小時的備份 不能壓縮起來是因為怕NFS SERVER掛點了以後
要能夠馬上頂替著用

下面是CEO幫我寫 然後我在改寫一部份的script 與大家參考

#!/bin/csh -f
## this script is written by David

set DES = "/db/snapshot"
set DATE = `date +%H%M_%m%d%y`
set domain = `domainname`
set SNAP = "weekily.0/daily"

if ($#argv != 0) then
echo " "
if ( "$1" == "-h" ) then
echo " working in Hourily mode"
set SNAP = "hourily"
endif

if ( "$1" == "-d" ) then
echo " working in Daily mode"
set SNAP = "weekily.0/daily"
endif

if ( "$1" == "-w" ) then
echo " working in Weekily mode"
set SNAP = "weekily"
endif

endif

### test dir
if ( $user != "root" ) then
echo " ERROR: The Task must run by root "
exit
endif
if ( ! -d $DES ) then
echo " ERROR: Datebase cannot be seen, check snapshot dir "
exit
endif
if (! -f /stor13/In_d64 ) then
echo " ERROR: Datebase lost, check stor13 "
exit
endif
if (! -f /users/In_rh64 ) then
echo " ERROR: Datebase lost, check users"
exit
endif
if ( -d $DES/${SNAP}.5 ) then
echo " delete the oldest version of snapshot "
rm -rf $DES/${SNAP}.5 ## delete 5
echo " move the snapshot dir name + 1 "
endif
if ( -d $DES/${SNAP}.4 ) then
mv $DES/${SNAP}.4 $DES/${SNAP}.5 ## 4 --> 5
endif
if ( -d $DES/${SNAP}.3 ) then
mv $DES/${SNAP}.3 $DES/${SNAP}.4 ## 3 --> 4
endif
if ( -d $DES/${SNAP}.2 ) then
mv $DES/${SNAP}.2 $DES/${SNAP}.3 ## 2 --> 3
endif
if ( -d $DES/${SNAP}.1 ) then
mv $DES/${SNAP}.1 $DES/${SNAP}.2 ## 1 --> 2
endif
if ( -d $DES/${SNAP}.0 ) then
mv $DES/${SNAP}.0 $DES/${SNAP}.1 ## 0 --> 1
endif
## make hard link from snapshot DIR 1 --> 0
echo "make hard link from $DES/${SNAP}.1/to $DES/${SNAP}.0/"
cp -al $DES/${SNAP}.1/. $DES/${SNAP}.0/
echo " clear sync log for all mode"
rm -rf $DES/${SNAP}.0/snapshot_*
################################################
## now , start the backup
################################################
## in all mode , sync the users and ccase/ccase.tw
set task = "rsync -av --delete /users/ $DES/${SNAP}.0/users"
echo $task
$task
echo " " >! $DES/${SNAP}.0/snapshot_users_${DATE}
## in domain rdwic , sync the ccase
if ( $domain == "rdwic" ) then
set task = "rsync -av --delete /ccase/ $DES/${SNAP}.0/ccase"
echo $task
$task
echo " " >! $DES/${SNAP}.0/snapshot_ccase_${DATE}
endif
## in domain twrdwic , sync the ccase.tw
if ( $domain == "twrdwic" ) then
set task = "rsync -av --delete /ccase.tw/ $DES/${SNAP}.0/ccase.tw"
echo $task
$task
echo " " >! $DES/${SNAP}.0/snapshot_ccase.tw_${DATE}
endif
### in daily moe sync the rf mx
if ( $SNAP == "weekily.0/daily" ) then
set task = "rsync -av /mx/ $DES/${SNAP}.0/mx"
echo $task
$task
echo " " >! $DES/${SNAP}.0/snapshot_mx_${DATE}
endif
## in Weekily Mode , sync the stor13
if ( $SNAP == "weekily" ) then
set task = "rsync -av --delete /stor13/ $DES/${SNAP}.0/stor13"
echo $task
$task
echo " " >! $DES/${SNAP}.0/snapshot_stor13_${DATE}
endif

目前的缺點是
1. 在 hourily daily weekily 都會保留六份備份 weekily太多了
2. hourily 與 daily 的備份會事先取前一天的備分做一份所有檔案的Hard link
再與伺服器資料作更新 這樣子的作法是為了節省磁碟空間
假設 users 總共有 10G 那snapshot 下來的
hourily.0/users 與 hourily.1/users 各自有10G 但是卻是指到同一份inode
daily 也是
但是 .... 要是inode掛掉的話 那備份全毀 所以
weekily的備份是不可以用hard link
可以先將上個星期的資料另外本機自己 sync一份到weekily.0
然後再與server 做RSYNC
其實這個用rsync的參數究可以辦到了 但是我試驗了很多事 都做不起來....
3. rsync的過程中是會print出來 希望用tee command同步抄寫到
snapshot_stor13_${DATE} 檔案裡面 這樣子就可以清楚知道SYNC了多少資料量

--
Tags: Linux

All Comments

Odelette avatar
By Odelette
at 2007-05-14T21:15
小修正 daily,hourly, weekly, monthly, quarterly

Re: 請問 telnet server

Ida avatar
By Ida
at 2007-05-09T17:26
※ 引述《indept (真人)》之銘言: : 請問,用ssh以一般使用者登入, 再su成root就安全了嗎? : 我是說 root 的 passwd 仍然透過網路送出去了, : 還是說一旦一個 ssh session 建立之後所有的傳輸都被編碼了? : 我過去以為 ssh 是開第二個 por ...

把ubuntu的LiveCD改為LiveUSB

Rachel avatar
By Rachel
at 2007-05-06T09:57
HTML版 http://blog.pixnet.net/kewang/post/4411579 這兩天一直在灌Kubuntu 7.04,不知道是不是我這個光碟在燒錄時的問題,在進LiveCD的 開機畫面時一直當掉,progress bar每次讀到一半就掛掉 = =,後來我想說把LiveCD的資 料全 ...

根據id3v2 來作MP3自動分類

Faithe avatar
By Faithe
at 2007-05-03T16:01
最近下載一堆MP3在同一個目錄 /path/to/mp3 覺得很亂 於是就把同一歌手的mp3 move 到 /path/to/mp3/歌手 使用軟體: http://sourceforge.net/projects/id3lib/ #!/bin/sh cd /path/to/mp3 for i in * ...

開機問題

Necoo avatar
By Necoo
at 2007-05-03T14:09
※ 引述《kumaHL (哭馬 andlt;( ̄︶ ̄)/)》之銘言: : 之前買了顆新硬碟 想重灌 xp系統 : 但又怕 xp灌完會把 grub弄爛 (我不會修 orz) : 所以就先把其他硬碟拔掉 : 灌好 xp後再裝回去 : 結果變成進不了 xp orz 因為你不想讓xp把grub弄爛,所以xp的loa ...

Beryl是個華而不實的東西嗎?

Skylar DavisLinda avatar
By Skylar DavisLinda
at 2007-04-24T10:42
※ 引述《oenodatkkcity.com.tw (高雄市民就是喜歡弊案)》之銘言: : ※ 引述《guezt.bbsatptt.cc》之銘言: : andgt; Microsoft 公司的 aero, 以及自由軟體的 compiz andamp; beryl 計畫[1] : andgt; 目前 ...