Tuesday, October 19, 2004

有關系統備份

此文最初發表於Gentoo台灣論壇: http://forums.gentoo.org.tw/viewtopic.php?t=41975

大家都知道要做資料備份及設定檔的備份。但有沒有想過做整個系統的備份呢?例如自己不小心rm -rf或是chmod -R 777敲得太快後面打了/ 之後還沒來得及打目錄就按了Enter;系統被入侵;斷電導致整個硬碟完蛋;又或是系統被自己莫名其妙地搞壞了最終都不懂怎麼修復等等。這時候似乎只有重 裝了,但Gentoo重裝可不是一件輕鬆的事喔!如果你做了整個系統的備份就不用怕了!Windows裡有Ghost,linux下有Partimage和Mondorescue,但始終我還是覺得unix常見的工具反而是最具靈活性的。

用LiveCD或Knoppix開機,並將根分區掛好:/mnt/gentoo。如果你的/boot,/usr用的是獨立的分區或硬碟,你必須把它們分別掛到/mnt/gentoo/boot ,/mnt/gentoo/usr等目錄裡。然後:
代碼:

# cd /mnt/gentoo
# tar -cz --exclude-from /mnt/gentoo/root/exclude-list -iv * | split -a 1
-b 700m - /path/to/mybackup.tar.gz-

這樣會產生好幾個包mybackup.tar.gz-a, mybackup.tar.gz-b等等,每個最大700m(方便燒碟)。exclude-list可以事先寫好,類似這樣:
usr/portage/distfiles
var/tmp/portage
home/yourusername/music
home/yourusername/video

並放到你的gentoo分區的/root裡。
注意存放備份包的地方要有足夠的空間,如果在不同的分區,事先要掛好。
還原的時候,先要在有關的分區上重建檔案系統,並象以上所說的那樣掛載好,然後:

代碼:

# cd /mnt/gentoo
# cat /path/to/mybackup.tar.gz-* | tar xzvpf

為什麼要用LiveCD啟動呢?這是因為運行中的系統並非靜態,不應該簡單地去tar根目錄;有的程序如partimage甚至要求卸載備份的分區。當然 也有可以在運行中的系統做完全備份的程序啦,Mondorescue就是一個例子;這些程序都頗為複雜,不過有興趣的朋友可以自己試試。

我自己有個分區裝了個後備系統。這樣每當其他系統出了問題,我不至於沒機子用。這個後備系統我平時很少用,更不會去瞎调;但我機子的grub是從這裡裝 的,備份或搶修其他分區也是在這裡做的。這個後備系統本來是Knoppix的硬碟安裝(因為現在Knoppix硬碟安裝實在是太容易了),不過我已經把它 換成了gentoo了(已經有了備份就什麼都不用怕了)!

LinuxSir論壇的gao_linfeng寫過一篇使用dd的備份方案挺有意思的: http://bbs.linuxsir.org/showthread.php?s=&threadid=113474

另外,如果想備份partition table,可以:
代碼:

# dd if=/dev/hda of=mbr.bak bs=512 count=1

還原:
代碼:

# dd of=/dev/hda if=mbr.bak bs=512 count=1

0 Comments:

Post a Comment

<< Home