Linux dd 命令

haoge0205發表於2020-08-19

Linux dd 命令用於讀取、轉換並輸出資料。dd 可以從標準輸入或檔案中讀取資料,根據指定的格式來轉換資料,再輸出到檔案、裝置或標準輸出。

語法

dd if=/path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks

引數說明

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=conversion[,conversion...]    用指定的引數轉換檔案。 

iflag=FLAGS              指定讀的方式FLAGS,參見“FLAGS引數說明”

oflag=FLAGS              指定寫的方式FLAGS,參見“FLAGS引數說明”

conv引數說明

ascii                  轉換 EBCDIC 為 ASCII。 

ebcdic                    轉換 ASCII 為 EBCDIC。 

ibm                   轉換 ASCII 為 alternate EBCDIC. 

block                  把每一行轉換為長度為 cbs 的記錄,不足部分用空格填充。 

unblock                 使每一行的長度都為 cbs ,不足部分用空格填充。 

lcase                  把大寫字元轉換為小寫字元。 

ucase                  把小寫字元轉換為大寫字元。 

swab                   交換輸入的每對位元組。 

noerror                 出錯時不停止。 

notrunc                 不截短輸出檔案。

sync                   把每個輸入塊填充到ibs個位元組,不足部分用空(NUL)字元補齊。

FLAGS引數說明

append -append  mode  (makes  sense  only  for output; conv=notrunc sug-gested)

direct                 讀寫資料採用直接IO方式;

directory               讀寫失敗除非是directory;

dsync                 讀寫資料採用同步IO;

sync                 同上,但是針對是後設資料

fullblock              堆積滿block(accumulate full blocks of input )(iflag only);

nonblock               讀寫資料採用非阻塞IO方式

noatime                讀寫資料不更新訪問時間

Time + dd 測試磁碟讀寫速度

1、time 有計時作用,dd 用於複製,從 if 讀出,寫到 of ;

2、if=/dev/zero(產生字元)不產生IO,因此可以用來測試"寫速度";

3、of=/dev/null(黑洞)不產生IO,因此可以用來測試"讀速度";

4、將/tmp/var 複製到 /var 則同時測試了讀寫速度;

5、bs 是每次讀或寫的大小,即一個塊的大小,count 是讀寫塊的數量;

測試磁碟寫:

time dd if=/dev/zero of=/test.dbf bs=4k count=100000

/dev/zero 是一個偽裝置,只產生空字元流,不會產生IO,所以 IO 都會集中在 of 檔案中,of 檔案只用於寫,所以這個命令用於測試磁碟寫能力。結尾新增oflag=direct將跳過記憶體快取,新增oflag=sync將跳過hdd快取

測試磁碟讀:

time dd if=/dev/sdb of=/dev/null bs=4k

測試讀寫:

time dd if=/dev/sdb of=/testrw.dbf bs=4k  (對/dev/sdb是讀,對/testrw.dbf是寫,若在同一個磁碟下,則測試磁碟的讀寫)

測試純寫入效能:

dd if=/dev/zero of=test bs=8k count=10000 oflag=direct

測試純讀取效能:

dd if=test of=/dev/null bs=8k count=10000 iflag=direct


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2712820/,如需轉載,請註明出處,否則將追究法律責任。

相關文章