Linux命令之dd


dd [OPERAND]

dd 選項

復制一個文件,根據[OPERAND]進行轉換和格式化

(1). OPERAND參數

說明1:dd的選項只有’--help’和’--version’,也就是幫助與版本信息。而下列都是[操作數],而非選項。

說明2:讀取是輸入,寫入是輸出

說明3:不指定if,默認從標准輸入讀取。如果不指定of,默認寫入到標准輸出

bs=BYTES 同時設置讀取和寫入(輸入ibs輸出obs)的塊大小為BYTES個字節,具體看本章(4).塊大小可以使用的計量單位

cbs=BYTES 一次轉換BYTES個字節,即指定轉換緩沖區大小

conv=CONVERSION[,CONVERSION] 用指定參數轉換文件

count=N 僅拷貝N個塊,塊大小等於ibs指定的字節數

ibs=BYTES 一次讀取BYTES個字節,即指定一個塊大小為BYTES個字節(默認512)

if=FILE 從文件讀取代替標准輸入,即指定源文件

iflag=FLAG[,FLAG] 使用FLAG參數指定的輸入方式

obs=BYTES 一次寫入BYTES個字節,即指定一個快大小為BYTES個字節(默認512)

of=FILE 寫入到文件代替標准輸出,即指定目的文件

oflag=FLAG[,FLAG] 使用FLAG參數指定的輸出方式

seek=BLOCKS 從輸出文件開頭跳過BLOCKS個輸出塊再開始復制(小心ibs和obs不一樣)

skip=BLOCKS 從輸入文件開頭跳過BLOCKS個輸入塊再開始復制(小心ibs和obs不一樣)

status=WHICH 用來控制dd程序的輸出信息。分別為noxfer,none和progress,默認為progress。none不輸出任何相關信息,錯誤信息正常輸出。noxfer不輸出最后的統計信息。progress輸出所有信息。

(2).CONVERSION參數

ascii 由ebcdic碼轉換至ascii碼

ebcdic 由ascii碼轉換至ebcdic碼

ibm 由ascii碼轉換至替換的ebcdic碼

block 對於輸入中的每一行輸出cbs個字節,用空格替換輸入換行符,必要時用空格填充

unblock 刪除cbs大小的塊的尾部空格,並添加一個換行符

lcase 將大寫字符轉換為小寫字符

nocreat 不創建輸出文件,輸出文件必須已經存在

excl 輸出文件已經存在則失敗;dd命令必須創建文件本身

notrunc 不要截斷輸出文件(不將文件長度縮短為0)

ucase 將小寫字符轉換為大寫字符

sparse 嘗試查找而不是編寫空(NUL)輸出塊。在支持稀疏文件的文件系統中,當擴展輸出文件時,這會創建稀疏輸出。

swab 交換每對字節,奇數時最后一個字節只復制

noerror 讀取數據發生錯誤后仍然繼續

sync 把每個輸入塊以空(NUL)填充至ibs大小,如果配合日block或unblock使用,則以空格代替空(NUL)填充

fdatasync 結束前將輸出文件數據寫入磁盤

fsync 類似上面,但元數據也一同寫入

(3).FLAG參數

append 追加模式。將數據拷貝到目標文件末尾,同時應該設置conv=notrunc。否則文件將在被拷貝之前清空。

cio 使用並發I/O存取模式,此模式使用直接I/O。並刪除POSIX要求,將所有I/O串行化到同一個文件。在cio模式下無法打開該文件,同時打開一個標准文件(這句話可能有錯,原文:A file cannot be opened at cio mode,and with a standard open in the same time.)。

direct 使用直接I/O存取模式,避免緩沖區高速緩存(不在內存中對文件數據進行緩存)

directory 僅拷貝文件夾,因為很多系統不支持對文件夾進行I/O操作,所以不太實用。

dsync 使用同步I/O模式讀寫數據。每次寫的時候,都強制進行一次物理寫入(寫入/保存到磁盤)

sync 數據和元數據都使用同步I/O模式。

fullblock 直到填充萬一個塊后才返回

nonblack 使用非阻塞I/O

noatime 不改變文件的訪問時間

noctty 不對dd使用指定的文件作為控制終端

nofollow 不跟隨符號鏈接

nolinks 如果有多個硬鏈接則失敗(硬鏈接和軟鏈接也就是符號鏈接,自己查一下吧,有點復雜)

binary 使用二進制I/O

text使用text I/0

count_bytes 將count的單位設置為字節,而不是塊

(4).塊大小可以使用的計量單位

單位大小

代碼

字節(1B)

c

字節(2B)

w

塊(512B)

b

千字節(1024B)

k

兆字節(1024KB)

M

吉字節(1024MB)

G

(5).實例

  根據/dev/zero空文件創建一個50M的空文件

[xf@xuexi ~]$ dd if=/dev/zero of=1.txt bs=M count=50
記錄了50+0 的讀入
記錄了50+0 的寫出
52428800字節(52 MB)已復制,0.0508383 秒,1.0 GB/秒
[xf@xuexi ~]$ ll -h 1.txt 
-rw-rw-r--. 1 xf xf 50M 2月  26 10:17 1.txt
[xf@xuexi ~]$ cat 1.txt 
[xf@xuexi ~]$ 

  注意:還可以用於完整備份。dd if=/dev/sda of=/dev/sdb(包括超級塊等)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM