dd是一個Unix和類Unix系統上的命令,主要功能爲轉換和複製文件。dd的名字可能來源於IBM的工做控制語言(JCL)中的DD語句,意爲「Data Description」(數據描述)的縮寫,它也被用來在Linux和類Unix系統下對硬盤設備進行寫性能的檢測。緩存
if=FILE 從FILE文件中讀數據而不是標準輸出(dd命令默認從標準輸入讀數據) of=FILE 輸出到FILE文件而不是標準輸出(dd命令默認輸出到標準輸出) ibs=BYTES 設置輸入的塊大小爲BYTES字節,即dd命令一次讀多少個字節。(默認大小是512 bytes) obs=BYTES 設置輸出的塊大小爲BYTES字節,即dd命令一次寫多少個字節。(默認大小是512 bytes) bs=BYTES 同時設置輸入和輸出的塊大小爲BYTES字節,這個設置會覆蓋ibs和obs設置。另外,若是沒有設置conv選項,每個輸入塊會拷貝爲每個輸出塊。 cbs=BYTES 設置轉換的塊大小爲BYTES字節,即dd命令一次轉換多少個字節。 skip=BLOCKS 拷貝跳過輸入文件開頭的BLOCKS個塊,塊的大小由ibs指定。 seek=BLOCKS 拷貝跳過輸出文件開頭的BLOCKS個塊,塊的大小由obs指定。 count=BLOCKS 從輸入文件拷貝BLOCKS個塊,塊的大小由ibs指定。(默認拷貝整個輸入文件) conv=CONVERSION[,CONVERSION]... 按照CONVERSION指定的參數轉換文件。CONVERSION參數後面有說明。 iflag=FLAG[,FLAG]... 以FLAG參數指定的方式試問輸入文件。FLAG參數後面介紹。 oflag=FLAG[,FLAG]... 以FLAG參數指定的方式試問輸出文件。FLAG參數後面介紹。
ascii 從EBCDIC轉換爲ASCII, 這是1:1的轉換。 ebcdic 從ASCII轉換爲EBCDIC, 這是1:1的轉換。 ibm 從ASCII轉換爲交替的EBCDIC編碼,這不是1:1的轉換。acsii, ebcdic和ibm這3個參數是互斥的。 block 對輸入的每一行,輸出爲cbs參數指定的字節數。不夠的部分以空格填充。該選項與ascii, ebcdic, ibm, 和unblock選項衝突。 unblock 在的每個cbs大小的輸入塊上,去除多餘的尾隨空格。該選項與ascii, ebcdic, ibm, 和block選項衝突。 lcase 將全部字母轉換爲小寫。 ucase 將全部字母轉換爲大寫。 swab 交換輸入的每對字節。 noerror 當讀取錯誤時繼續轉換。 nocreat 不建立輸出文件,即命令執行前輸出文件必須存在。 excl 建立輸出文件,若是輸出文件已經存在,則發生錯誤。該選項與nocreate衝突。 notrunc 不截斷輸出文件。 sync 用zero字節將每一個輸入塊填充到由ibs值指定的長度,若是指定了block或者unblock選項,則用改用空格填充。 fdatasync 在命令結束以前將數據寫入磁盤。 fsync 在命令結果以前將數據和元信息寫入磁盤,與fdatasync的區別是fdatasync隻影響文件的數據部分,而fsync還影響文件的屬性部分。
append 以append方式寫文件。 cio 以併發的I/O方式操做數據。 direct 以直接的I/O機制操做數據,避免進行數據緩存。 directory 若是文件不是一個目錄,則失敗。大多數的操做系統不容許I/O到一個目錄,因此這個參數被限制。 sync 使用同步的I/O方式對數據和文件屬性。 nonblock 使用非阻塞的I/O方式。 noatime 不更新文件的訪問時間。 nofollow 不進入符號連接。 nolinks 若是文件是multiple硬鏈接,則失敗。 binary 二進制I/O。 text 文本I/O。
#寫測試: dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync #讀測試: dd if=/tmp/test1.img of=/dev/null oflag=dsync