安裝操做系統,速度太慢,整個過程太冗長乏味了。 linux
安裝過程當中,須要回答若干問題,系統須要安裝無數個軟件,建立和寫入無數的文件。由於涉及到大量的文件定位和讀寫,速度必定是快不起來的。 ubuntu
Windows下咱們經常使用ghost系統來備份和刻錄操做系統。ghost能夠clone整個系統的鏡像,而後在新的電腦上恢復,至關簡單。用ghost系統安裝操做系統比使用安裝光盤安裝系統要快捷多了,也不須要回答任何問題了。 網絡
那麼,咱們能不能用ghost來備份和恢復Linux系統呢。 工具
答案是不行。由於ghost只能識別不多的老舊Linux文件系統,也沒法識別grub和LILO等引導加載程序。 佈局
其實,Linux下也有ghost工具,最著名的有g4l—ghostForLinux。 網站
用了一下ghostForLinux。若是是整個磁盤的複製和恢復,還算簡單。可是,我試了半天,也沒辦法實現對一個或者幾個分區的恢復。 spa
g4l,仍是太弱了,沒法知足個人要求! 操作系統
深深的苦惱中,靈光乍現:神奇的ghost的原理是什麼呢?不就是數據複製嗎?Linux下的dd命令不就是最強大的數據複製工具! .net
既然如此,我爲何要使用g4l這樣複雜的工具呢?一條dd命令不就能夠幫我實現任意複雜的鏡像複製和恢復的需求了嗎?管他是grub,仍是ext4,btrfs,FAT32,NTFS...dd面前衆平生等。 命令行
進入Linux操做系統,打開命令行,執行以下命令:
sudo fdisk -u -l
能夠查看全部磁盤上的全部分區的尺寸和佈局狀況。
-u,讓start和end中數字的單位是512字節,也就是一個sector扇區的大小。
假設我有一個/dev/sda磁盤,有100GB大小。我安裝了一個Ubuntu操做系統。使用了以下分區:
/dev/sda1 5GB
/dev/sda2 1GB 擴展分區
/dev/sda5 1GB 擴展分區
/dev/sda2是全部擴展分區,它的大小和/dev/sda5重合。
/dev/sda1是ext4格式的文件系統。用於安裝ubuntu操做系統。
/dev/sda5是swap格式的文件系統,做爲交換分區。
若是我用弱智的g4l工具製做系統的鏡像,就須要備份整個磁盤100GB,而不是我須要的6GB。
g4l也能夠單獨備份分區,可是在恢復時,就須要在目標計算機上安裝好grub,並進行了適當的分區。很麻煩!
我這裏,可使用一條dd命令就生成6GB的鏡像。而後能夠在任意硬盤大於6GB的計算機上恢復出完整的系統,包括MBR和3個分區sda1,sda2,sda5。
找一個U盤,安裝UbuntuLive Cd系統。【具體如何製做U盤啓動的UbuntuLive CD,能夠參考Ubuntu官方網站的幫助。】
UbuntuLive Cd和WindowsPE系統相似,是光盤/U盤引導的Ubuntu操做系統,不須要安裝就能夠直接使用。
U盤啓動,進入盤上的Ubuntu系統,打開命令行,執行:
sudo fdisk -u -l /dev/sda
查看硬件的分區狀況。
而後執行:
dd bs=512 count=[fdisk命令中最大的end數+1] if=/dev/sda of=/ghost.img
這樣,就能夠把我須要的分區數據所有copy到ghost.img文件中。鏡像製做完成了!
而後,咱們就能夠把U盤插到其餘系統上,用U盤啓動,進入UbuntuLiveCD,打開命令行,執行以下命令:
dd if=/ghost.img of=/dev/sda
完成後,拔掉U盤,啓動計算機,就能夠看到咱們的Linux系統已經安裝完畢了!
注意:
不要直接在計算機上用本地磁盤啓動系統後執行dd命令生成本地磁盤的鏡像。而應該使用livecd啓動計算機。
所以計算機運行時會對系統盤產生大量寫操做。 直接對運行中的系統盤生成的鏡像,在恢復到其餘硬盤上時,極可能會沒法啓動!
在linux上用dd命令實現系統鏡像備份和恢復,是否是很簡單呢?
對於Windows系統,甚至Mac等等任意系統,其實均可以用dd命令實現系統鏡像的備份和恢復。
由於,Linux的fdisk命令可以識別任意系統下的分區格式。fdisk並不關係分區上的文件系統,甚至有無文件系統都不關心。fdisk老是能夠報告分區佔用了哪些扇區。
dd命令也不關心磁盤的文件系統格式,它只是簡單地按照要求從指定的位置,複製多少字節數據而已。
dd命令實現鏡像備份和恢復,比Ghost軟件簡單和強大多了。使用ghost軟件,依然須要用戶進行復雜而危險的磁盤分區操做。
而使用fdisk和dd這兩條命令,一切都免了!
要使用 dd 和 gzip 生成壓縮的鏡像文件,能夠執行命令: # dd bs=512
count=[fdisk命令中最大的end數+1] if=/dev/sda | gzip -6 > /ghost.img.gz
還原時,能夠執行下列命令: # gzip -dc /ghost.img.gz.gz | dd of=/dev/sda