2009年3月20日 星期五

Linux 厲害的備份工具

作者: Baron. Wan

前些日子, 公司的老大(我們公司協理,我們都稱它老大), 希望我能將公司以前製作的一個 客制化 OS (Debain Linux OS) 做一整個備份, 當時在想, 怎樣可以把 Linux 的 partition 作成 image, 那時第一個浮現腦海的竟然是 Ghost , 但自己卻不希望使用它, 原因用它又必須搞一個 Dos 的開機片, 想想覺得麻煩至極, 後來又想到 linux 上有個指令好像可以試試: dd . 不錯, 這是一個可以把整個磁區 copy 出來的好工具, 但以前不太有機會用到它, 如今要用才知道對它實在不是很熟, 也因此趕緊翻書, 上網...查資料, 想不到網站上對於 dd 這個指令也是備受推崇, 深獲好評阿, 呵呵 ^^

dd 的參數其實也是蠻好記的, if (input 輸入端) , of (output 輸出端), bs ( 多少 blocks), count (次數, 以 bs 為基礎, ex: bs=512, count=10 >>> 512x10=大小).
以下開始來介紹這個好用的工具:
dd if=/dev/sda of=mbr_boot.img bs=512 count=1
上述指令會產生 mbr_boot.img 檔, 容量為 512 bytes, 內容則是硬碟上第一個磁區前512bytes 的資料(MBR), 詳記關於 boot 的相關重要資料, 當然也包含磁碟切割的內容...等等.

dd if=/dev/sda1 of=system_backup.img
上 述指令會將整個 sda1 partition 備份起來成 system_backup.img , 容量就是整個 partition 大小, 很大的 = =! 初次備份我也被這個容量嚇一跳, 哇!! ~ 怎麼這麼大呀? 沒辦法, 人家是一個bit一個bit的來作業, 可是沒有偷懶呢!!

如果想將它容量縮小, 當然就只能靠壓縮了.
gzip -9 system_backup.img
這是最高的壓縮比, 會生出 system_backup.img.gz 的壓縮檔案.

由於上述這樣實做, 等於是兩次工, 簡直可以用曠日費時來比擬, 後來在網路上看到有人將它一次搞定:
dd if=/dev/sda1 gzip -9 > /var/tmp/system_backup.img.gz

接下來是還原的方式了.
gzip -dc /var/tmp/system_backup.img.gz |dd of=/dev/sda1

如果沒有壓縮, 可以直接這樣用:
dd if=system_backup.img of=/dev/sda1

實做到此, 你一定也會想說, 疑? 那這個可不可以用在 windows 的備份上阿, 呵呵, 說實在的, 我想應該也行, 目前正在測試中 ^^~

2009/03/27: OK. 我想結果出爐了, dd 比 ghost 還要神奇: 它在備份 windows (NTFS) 的 partition or disk 時, windows 不需做封裝的動作即可執行備份動作(ghost 需先做封裝, 因為 windows 有 uuid 唯一值之故), 唯獨備份過程時間漫長. 但記得需同時備份 mbr 與 system. 還原時也必須連同 mbr 一起還原方可.

沒有留言: