dd命令詳解

2021-07-08 22:29:36 字數 3357 閱讀 6382

dd是

linux/

unix 下的乙個非常有用的命令,作用是用指定大小的塊拷貝乙個檔案,並在拷貝的同時進行指定的轉換。

dd指令使用

語法格式

dd   [option] 

dd指令選項詳解

if=file:輸入檔名,預設為標準輸入

of=file:輸出檔名,預設為標準輸出

ibs=bytes:一次讀入 bytes 個位元組(即乙個塊大小為 bytes 個位元組)

obs=bytes:一次寫 bytes 個位元組(即乙個塊大小為 bytes 個位元組)

bs=bytes:同時設定讀寫塊的大小為 bytes ,可代替 ibs 和 obs

cbs=bytes:一次轉換 bytes 個位元組,即轉換緩衝區大小

skip=blocks:從輸入檔案開頭跳過 blocks 個塊後再開始複製

seek=blocks:從輸出檔案開頭跳過 blocks 個塊後再開始複製。(通常只有當輸出檔案是磁碟或磁帶時才有效)

count=blocks:僅拷貝 blocks 個塊,塊大小等於 ibs 指定的位元組數

conv=ascii:把ebcdic碼轉換為ascil碼。 

conv=ebcdic:把ascil碼轉換為ebcdic碼。 

conv=ibm:把ascil碼轉換為alternate ebcdic碼。 

conv=block:把變動位轉換成固定字元。 

conv=ublock:把固定位轉換成變動位。 

conv=ucase:把字母由小寫轉換為大寫。 

conv=lcase:把字母由大寫轉換為小寫。 

conv=notrunc:不截短輸出檔案。 

conv=swab:交換每一對輸入位元組。 

conv=noerror:出錯時不停止處理。 

conv=sync:把每個輸入記錄的大小都調到ibs的大小(用nul填充)。 

注意:指定數字的地方若以下列字元結尾乘以相應的數字:b=512, c=1, k=1024, w=2, xm=number m,kb=1000,k=1024,mb=1000*1000,m=1024*1024,gb=1000*1000*1000,g=1024*1024*1024

dd使用例項

假設了如下的情況:

要備份的資料檔案:30720kb

block 0 =8 kb.

raw offset 64 kb.

設定 bs=8k

1、從raw裝置備份到raw裝置

dd if=/dev/rsd1b of=/dev/rsd2b bs=8k skip=8 seek=8 count=3841

2、裸裝置到檔案系統

dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841

3、檔案系統到裸裝置

dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8

4、檔案系統到檔案系統,你可以為了提公升i/o把bs設為較高的數值

dd if=/oracle/dbs/df1.dbf of=/backup/df1.dbf bs=1024k

5、備份/dev/hdx全盤資料,並利用gzip工具進行壓縮,儲存到指定路徑(bzip2工具也一樣可使用)

dd  if=/dev/hdx  |  gzip > /path/to/image.gz

6、生成1g的虛擬塊裝置sparse file(稀疏檔案)

dd if=/dev/zero of=1g.img bs=1m seek=1000 count=0

sparse file是什麼,稀疏檔案,也就是說,是乙個擁有空的空間的檔案,磁碟塊將並沒分配給這些檔案。如果這些空的空間填滿ascii的null字元,那麼檔案才會是實際的大小。

7、拷貝光碟資料到backup資料夾下,並儲存為cd.iso檔案,再進行燒錄

dd  if=/dev/cdrom  of=/backup/cd.iso

cdrecord -v cd.iso

8、將記憶體裡的資料拷貝到backup目錄下的mem.bin檔案

dd if=/dev/mem of=/backup/mem.bin bs=1024

9、將軟碟機資料備份到當前目錄的disk.img檔案

dd if=/dev/fd0 of=disk.img count=1 bs=1440k

10、將備份檔案恢復到指定盤

dd if=/backup/df1.dbf of=/dev/rsd1b

11、將壓縮的備份檔案恢復到指定盤

gzip -dc /path/to/image.gz | dd of=/dev/hdx

12、測試磁碟寫能力

time dd if=/dev/zero of=/test.dbf bs=8k count=300000

因為/dev/zero是乙個偽裝置,它只產生空字元流,對它不會產生io,所以,io都會集中在of檔案中,of檔案只用於寫,所以這個命令相當於測試磁碟的寫能力。

13、測試磁碟讀能力

time dd if=/dev/sdb1 of=/dev/null bs=8k

因為/dev/sdb1是乙個物理分割槽,對它的讀取會產生io,/dev/null是偽裝置,相當於黑洞,of到該裝置不會產生io,所以,這個命令的io只發生在/dev/sdb1上,也相當於測試磁碟的讀能力。

14、測試同時讀寫能力

time dd if=/dev/sdb1 of=/test1.dbf bs=8k

這個命令下,乙個是物理分割槽,乙個是實際的檔案,對它們的讀寫都會產生io(對/dev/sdb1是讀,對/test1.dbf是寫),假設他們都在乙個磁碟中,這個命令就相當於測試磁碟的同時讀寫能力

15、備份磁碟開始的512byte大小的mbr資訊到指定檔案

dd  if=/dev/hdx  of=/path/to/image  count=1  bs=512

16、恢復mbr

dd if=/mnt/windows/linux.lnx of=/dev/hda bs=512 count=1

17、 得到最恰當的block size。 通過比較dd指令輸出中所顯示的命令執行時間(選時間最少的那個),即可確定系統最佳的block size大小

dd if=/dev/zero bs=1024 count=1000000 of=/root/1gb.file

dd if=/dev/zero bs=2048 count=500000 of=/root/1gb.file

dd if=/dev/zero bs=4096 count=250000 of=/root/1gb.file

dd if=/dev/zero bs=8192 count=125000 of=/root/1gb.file

本文**:

dd命令詳解

dd 用指定大小的塊拷貝乙個檔案,並在拷貝的同時進行指定的轉換。注意 指定數字的地方若以下列字元結尾,則乘以相應的數 字 b 512 c 1 k 1024 w 2 引數注釋 1.if 檔名 輸入檔名,預設為標準輸入。即指定原始檔。if input file 2.of 檔名 輸出檔名,預設為標準輸出。...

dd命令詳解

dd 用指定大小的塊拷貝乙個檔案並在拷貝的同時進行指定的轉換.注意 指定數字的地方若以下列字元結尾,則乘以相應的數字 b 512 c 1 k 1024 w 2 引數注釋 1.if 檔名 輸入檔名,預設為標準輸入。即指定原始檔。if input file 2.of 檔名 輸出檔名,預設為標準輸出。即指...

dd命令打包多個檔案 dd命令詳解

一 dd命令的解釋 dd 用指定大小的塊拷貝乙個檔案,並在拷貝的同時進行指定的轉換。注意 指定數字的地方若以下列字元結尾,則乘以相應的數 字 b 512 c 1 k 1024 w 2 引數注釋 1.if 檔名 輸入檔名,預設為標準輸入。即指定原始檔。if input file 2.of 檔名 輸出檔...