在linux上用dd命令實現ghost功能 — 神奇的fdisk和dd命令

來源:互聯網
上載者:User

神奇的fdisk和dd命令
        深深的苦惱中,靈光乍現:神奇的ghost的原理是什麼呢?不就是資料複製嗎?Linux下的dd命令不就是最強大的資料複製工具!

       既然如此,我為什麼要使用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。

具體步驟
        找一個隨身碟,安裝UbuntuLive Cd系統。【具體如何製作隨身碟啟動的UbuntuLive CD,可以參考Ubuntu官方網站的協助。】
UbuntuLive Cd和WindowsPE系統類別似,是光碟片/隨身碟引導的Ubuntu作業系統,不需要安裝就可以直接使用。

       隨身碟啟動,進入盤上的Ubuntu系統,開啟命令列,執行:
       sudo  fdisk -u -l /dev/sda
       查看硬體的分區情況。

然後執行:

    dd   bs=512 count=[fdisk命令中最大的end數+1] if=/dev/sda of=/ghost.img
    這樣,就可以把我需要的分區資料全部copy到ghost.img檔案中。鏡像製作完成了!

      然後,我們就可以把隨身碟插到其他系統上,用隨身碟啟動,進入UbuntuLiveCD,開啟命令列,執行如下命令:
dd if=/ghost.img of=/dev/sda
    完成後,拔掉隨身碟,啟動電腦,就可以看到我們的Linux系統已經安裝完畢了!
注意:
       不要直接在電腦上用本地磁碟啟動系統後執行dd命令產生本地磁碟的鏡像。而應該使用livecd啟動電腦。
        因此電腦運行時會對系統硬碟產生大量寫操作。 直接對運行中的系統硬碟產生的鏡像,在恢複到其他硬碟上時,很可能會無法啟動!

一樣適用於非Linux作業系統
       在linux上用dd命令實現系統鏡像備份和恢複,是不是很簡單呢?

       對於Windows系統,甚至Mac等等任意系統,其實都可以用dd命令實現系統鏡像的備份和恢複。
       因為,Linux的fdisk命令能夠識別任意系統下的分區格式。fdisk並不關係分區上的檔案系統,甚至有無檔案系統都不關心。fdisk總是可以報告分區佔用了哪些扇區。
 dd命令也不關心磁碟的檔案系統格式,它只是簡單地按照要求從指定的位置,複製多少位元組資料而已。
      dd命令實現鏡像備份和恢複,比Ghost軟體簡單和強大多了。使用ghost軟體,依然需要使用者進行複雜而危險的磁碟分割操作。
      而使用fdisk和dd這兩條命令,一切都免了!

壓縮和解壓縮
        可能我們需要備份的分區很大,使用dd命令產生的鏡像檔案也就很大。儲存和傳輸這些鏡像不太方便。  我們也可以使用壓縮程式壓縮產生的鏡像檔案。 這裡,我選擇使用gzip程式,配合dd命令一起使用。

gzip參數:
-c 表示輸出到stdout
-d  表示解壓縮
-1 表示最快壓縮
-9 表示最好壓縮
預設使用的是-6壓縮層級。

      
   
要使用 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

提醒:
       如果你把鏡像恢複到另一台電腦上,你可能會發現你的網卡是eth1,而不是eth0。這是因為
       /etc/udev/rules.d/70-persistent-net.rules   檔案把你做鏡像的電腦的網卡作為eth0登記了。  
       如果你的網路指令碼對eth0進行了處理,而沒有對eth1進行處理,那麼不修改網路指令碼,你可能就無法上網了。

       也許你會希望在做鏡像之前,先刪除 /etc/udev/rules.d/70-persistent-net.rules 檔案。這樣你恢複鏡像時,網卡的名字就是eth0。   就不會造成你在恢複後的電腦上無法上網的問題了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.