linux環境下的硬碟批量複製

2021-06-18 17:00:01 字數 3361 閱讀 5932

linux裝置在行業應用領域裡,基本上都是先把系統安裝到一台裝置,除錯完成後,再取出做好系統的硬碟(也稱之為母盤),通過複製這個母盤到新的硬碟,達到批量生產的目的。

硬碟的複製有兩種形式,乙個是使用硬碟複製機(也稱硬碟拷貝機),普通1拖5的硬碟複製機**大概在2萬元左右,對於微小創業公司而言是一筆不小的數目。另一種就是通過軟體的方式,在windows平台下這種型別的軟體非常多,最出名的,就是ghost了。本文主要介紹在linux環境下,如何實現硬碟的批量複製。 

linux環境中,主要有兩種方式,一種是純粹dd,第二種是dd+tar,下面分別介紹並比較各自的優缺點。 

注:以下討論的複製功能,基於母盤和等待複製的硬碟容量相等的情況下,如果容量不相等,可能導致資料不完整甚至出錯。

一、dd方式

dd是linux下最常用的複製資料的命令,因其能進行位元組級別的複製,可以保證兩塊硬碟的資料完全相同。

普通硬碟在linux中一般使用sdx標識,其中x為:a,b,c...,如sda代表第乙個硬碟,sdb代表第二個硬碟,以此類推。假設第乙個硬碟也就是sda做母盤,複製到第二塊硬碟sdb中,完整dd命令如下:

dd

if

=/dev

/sda of

=/dev

/sdb bs

=1024k

簡單說明:

if:輸入位置;

of:輸出位置,可以是硬碟的碟符,也可以某個檔案路徑;

bs:快取大小,合適的快取能夠加快複製速度;

此方法的優點在於,硬碟sda和sdb的資料完全一樣,缺點也很明顯,就是把空白資料區也複製一遍。在硬碟容量比較大,同時資料量很小的情況下,非常浪費時間。比如一塊500g的硬碟,只使用了3g的內容,使用dd命令,會複製500g的資料,如果是普通5400轉的硬碟,以50m/s的速度算,約需要166分鐘,也就是2個多小時。

二、dd+tar方式

硬碟上的資料分為兩種,一種是硬碟的引導及分割槽資訊(俗稱mbr),一種是使用者資料(包括作業系統)。

先看看mbr介紹:硬碟的0柱面、0磁頭、1扇區稱為主引導扇區(也叫主引導記錄mbr)。它由三個部分組成,主引導程式、硬碟分割槽表dpt(disk partition table)和硬碟有效標誌(55aa)。在總共512位元組的主引導扇區裡主引導程式(boot loader)佔446個位元組,第二部分是partition table區(分割槽表),即dpt,佔64個位元組,硬碟中分割槽有多少以及每一分區的大小都記在其中。第三部分是magic number,佔2個位元組,固定為55aa。

通過以上說明,我們發現,其實複製硬碟時,只需要複製mbr資料和使用者資料,就能達到硬碟複製效果。

考慮以後的方便性,這裡使用乙個安裝了linux作業系統的u盤做為複製中介,母盤的所有資料先儲存在u盤上,通過u盤複製到目標硬碟上。這樣只要接上u盤,就可以進行資料複製的操作。

下面介紹詳細步驟。

1、安裝linux作業系統到u盤中。最簡單的辦法就是在windows環境下,使用unetbootin把ubutu桌面版的iso映象(如ubuntu-12.04-desktop-i386.iso)寫到u盤上。

2、把u盤接到安裝有母盤的裝置中,並設定從u盤啟動。

3、複製mbr到u盤中。

sudo dd

if

=/dev

/sda of

=/media

/back/mbr.img bs

=1024k count

=1 說明:使用快取1m,複製一次,也就是總共複製了硬碟最前面的1m資料,包括了mbr(mbr總共512位元組)。 

2、複製分割槽資料到檔案中,假設作業系統安裝在分割槽sda1,資料儲存在分割槽sda2。

sudo mount

-o rw

/dev

/sda1

/mnt

sudo tar

-cpzvf

/media

/back

/bak.os.tgz

-c /mnt .

--exclude

=./mnt/tmp 

sudo umount

/mnt

sudo mount

-o rw

/dev

/sda2

/mnt

sudo tar

-cpzvf

/media

/back

/bak.data.tgz

-c /mnt . 

sudo umount

/mnt

3、把u盤接到需要複製的目標裝置上,設定從u盤啟動。

4、複製mbr到目標盤上,在目標裝置上,硬碟同樣是sba。

sudo dd

if

=/media

/back

/mbr.img of

=/dev

/sda bs

=1024k count

=1 5、格式化目標盤的分割槽,然後複製分割槽資料到目標盤上。

sudo mkfs

-t ext4

/dev

/sda1

sudo mkfs

-t ext4

/dev

/sda2

sudo mount

-o rw

/dev

/sda1

/mnt

sudo tar

-xpzvf

/media

/back

/bak.os.tgz  

-c/mnt

sudo umount

/mnt

sudo mount

-o rw

/dev

/sda2

/mnt

sudo tar

-xpzvf

/media

/back

/bak.data..tgz  

-c/mnt

sudo umount

/mnt

此方法的優點在於複製時間短,尤其在硬碟容量大,資料量小的情況下,非常明顯。同樣是一塊500g的硬碟,只使用了3g的資料,普通5400轉的硬碟,以50m/s的速度算,1分鐘左右就可以複製完成,就算加上系統切換時間,也比dd 500g硬碟要少得多。缺點在於前期準備工作比較多。另外,推薦把命令寫在指令碼中,直接執行指令碼可以節省不少敲命令的時間。

通過以上的比較,如果偶爾做硬碟的備份,直接使用dd更加簡單而方便。如果是需要批量複製幾十甚至上百臺裝置,又不想投資購買硬碟複製機,可以考慮dd+tar的方案。

linux下容量不同硬碟的複製

可以用parted magic光碟來實現 1.用parted magic對調整源盤的分割槽大小以適應目標盤 2.用dd命令按分割槽複製,如 dd if dev hda1 of dev hdb1 bs 1024k 3.重建目標盤的grub引導 用linux安裝盤引導,進入linux rescue方式,...

Linux環境下檔案批量複製指令碼

簡介 在做專案的時候,有一種需求,class檔案只能先以普通使用者身份用ftp複製到linux,然後用shell工具以root使用者將ftp複製來的檔案複製到對應的專案目錄,很麻煩,所以寫了一段指令碼完成這些任務。功能 只需要把要複製的檔案放到同乙個臨時目錄當中,然後修改指令碼檔案,sourcepa...

windows環境下從硬碟安裝linux系統筆記

對於大多數的計算機使用者來說,使用乙個作業系統已經足矣,但是對於那些躁動不安的人,總希望一台機器上裝有多個作業系統,以用來學習或者玩。下面就是在已經裝有windowsxp作業系統的基礎上安裝linux作業系統已達到安裝雙系統的目的。1 準備必須的檔案的安裝環境。獲得乙個linux系統的iso檔案。在...