神奇的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。
具體步驟
找乙個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作業系統
在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。 就不會造成你在恢復後的計算機上無法上網的問題了。
使用dd命令轉殖整個Linux系統
參考 本次使用使用dd命令轉殖整個ubuntu系統 1,vm安裝一台ubuntu虛擬機器 過程不詳述,硬碟1 10g 新增一塊硬碟2大於10g 本次新加硬碟15g新加的硬碟用於儲存dd複製的映象 2,使用cdrom或u盤啟動系統 啟動系統為ubuntu live模式 3,使用dd命令轉殖 檢視系統磁...
linux下用dd命令拷貝硬碟,複製轉殖及還原硬碟
linux系統如果想做備份還原,使用ghost的時候經常出現問題,後來發現可以直接使用dd命令完成硬碟的轉殖和還原.當拷貝完硬碟後,就可以拿這個硬碟放到其它裝置上跑了。也就是完成了 燒寫 了。實際操作中,最好使用另乙個系統啟動,如另乙個硬碟的系統,或者用live cd。當然,拷貝當前執行中的系統也是...
使用dd命令轉殖磁碟的方法介紹
同硬碟和分割槽打交道時,我們可能需要建立所有分割槽的副本或備份,而不僅僅是複製內容 不僅是各個硬碟分割槽,而且包括引導記錄 分割槽表等資訊 這時,我們就可以使用dd命令,它可能用於轉殖任何型別的磁碟,如硬碟 快閃儲存器 cd 以及軟盤等。dd命令介紹 dd命令的願意是data definiton。由...