2012年3月22日 星期四

硬碟備份 Disk to Image

作者:Baron. Wan

    Linux 當前實用性質最高,可與 ghost 比擬的 CloneZilla。不但可將 Linux 硬碟做 Disk to Disk,也可做到 Disk to Image ; 但還是有 clonezilla 做不到的事情,比如:將原先備份的 Disk image,還原至 小容量的硬碟上!這是一種特殊的情況,但還真的被我遇到。另外,經此事件後,我也思考到:如果今天我在硬碟中的系統總容量為 1TB,但實際上當前我只使用了 20GB 的容量空間,如果經由 clonezilla 來做,那我新的主機大概需要準備 1.5TB 的硬碟容量才能還原成功,在這樣的惡性循環上,何時是個頭呀?!!因此更加的決定研究這個:可將大容量硬碟還原到小容量硬碟的作法,我成功了,但還是必須有個限制,那就是:如果今天我實際有 20GB 的使用容量,那我期碼應該要準備個 21GB 來給它,你說這不惟過吧!^_^

儲存當前磁碟切割資訊
1. # df | grep sd | awk -F' ' '{print $6}' > disk.info

儲存當前磁碟對應的使用容量
2. # df | grep sd | awk -F' ' '{print $3}' > used.info

紀錄屆時還原需要手動 create 的 folder
3. create_dir.info
    -------------------
    /proc /sys /tmp /media /mnt

接下來,即將開始備份,在備份前,我們不能在當前的 root-filesystem 下工作,建議掛載一顆硬碟或藉由遠端共享的方式。

如果今天我們有三個分割區:/boot 、/、/var,首先我們可以先備份 /boot:
mksquashfs /boot $remote-connect/boot.img

然後再備份 /var:
mksquashfs /var $remote-connect/var.img

最後再備份 /:
mksquashfs `ls --ignore=var --ignore=boot --ignore=proc --ignore=sys --ignore=tmp --ignore=mnt --ignore=media / | sed 's/^/\//'` $remote-connect/root-filesystem.img

有幾個 folder 是我們在備份時必須忽略的,否則會無法 image完成:/proc、/sys、/tmp。/mnt 以及 /media是掛載裝置需要存在的 folder,因此我們不必添加進去。/var及 /boot 因為上述已製作成單一的 image 包,因此我們也不用再添加進去。而最後由於是 / 根目錄底下,因此其他都需要在最前端加上 '/' 。

[註] 如果記得的話,記得也將 fdisk -l /dev/sda 的訊息儲存起來,這在屆時,到其他台主機做還原動作時,是非常具有參考的價值。

接下來,關於還原的部份,請參閱我的 [Linux 技術研討:如何將大容量硬碟還原到小容量硬碟中] 一文。

沒有留言: