linux下dd命令詳解

來源:互聯網
上載者:User
linux下dd命令詳解

   名稱: dd
使用許可權: 所有使用者dd 這個指令在 manual 裡的定義是 convert and copy a file

使用方式:
dd [option]

如果你想要線上看 manual, 可以試試:
dd --help

或是
info dd

如果你想要看看這個版本如何:
dd --version

輸入或輸出
dd if=[STDIN] of=[STDOUT]

強迫輸入或輸出的Size為多少Bytes
bs: dd -ibs=[BYTE] -obs=[SIZE]

強迫一次只做多少個 Bytes
cbs=BYTES

跳過一段以後才輸出
seek=BLOCKS

跳過一段以後才輸入
skip=BLOCKS

當然你可以拿這個來方便的拷貝光碟(注意,你的光碟是標準的 iso9660格式才可以這麼做唷!)

dd if=/dev/cdrom of=cdrom.iso
其中 if 後面以及 of 後面的內容依你的需求調整。

然後給系統這個指令就可以燒了:

cdrecord -v cdrom.iso
這篇不是在講 cdrecord 的,所以上面的指令是最為簡單但是不一定能符合您的硬體環境...
功能:把指定的輸入檔案拷貝到指定的輸出檔案中,並且在拷貝過程中可以進行格式轉換。可以用該命令實現DOS下的diskcopy命令的作用。先用dd命令把磁碟片上的資料寫成硬碟的一個寄存檔案,再把這個寄存檔案寫入第二張磁碟片上,完成diskcopy的功能。需要注意的是,應該將硬碟上的寄存檔案用rm命令刪除掉。系統預設使用標準輸入檔案和標準輸出檔案。

文法:dd [選項]

if =輸入檔案(或裝置名稱)。

of =輸出檔案(或裝置名稱)。

ibs = bytes 一次讀取bytes位元組,即讀入緩衝區的位元組數。

skip = blocks 跳過讀入緩衝區開頭的ibs*blocks塊。

obs = bytes 一次寫入bytes位元組,即寫入緩衝區的位元組數。

bs = bytes 同時設定讀/寫緩衝區的位元組數(等於設定ibs和obs)。

cbs = byte 一次轉換bytes位元組。

count=blocks 只拷貝輸入的blocks塊。

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填充)。

 

例1:要把一張磁碟片的內容拷貝到另一張磁碟片上,利用/tmp作為臨時儲存區。把來源硬碟插入磁碟機中,輸入下述命令:

$ dd if =/dev/fd0 of = /tmp/tmpfile

拷貝完成後,將來源硬碟從磁碟機中取出,把目標盤插入,輸入命令:

$ dd if = /tmp/tmpfile of =/dev/fd0

磁碟片拷貝完成後,應該將臨時檔案刪除:

$ rm /tmp/tmpfile

 

例2:把net.i這個檔案寫入磁碟片中,並設定讀/寫緩衝區的數目。

(注意:磁碟片中的內容會被完全覆蓋掉)

$ dd if = net.i of = /dev/fd0 bs = 16384

 

例3:將檔案sfile拷貝到檔案 dfile中。

$ dd if=sfile of=dfile_____________________________________dd 是 Linux/UNIX 下的一個非常有用的命令,作用是用指定大小的塊拷貝一個檔案,並在拷貝的同時進行指定的轉換。

dd 的主要選項:
指定數位地方若以下列字元結尾乘以相應的數字:
b=512, c=1, k=1024, w=2, xm=number m

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...]
用指定的參數轉換檔。

轉換參數:

ascii 轉換 EBCDIC 為 ASCII。

ebcdic 轉換 ASCII 為 EBCDIC。

ibm 轉換 ASCII 為 alternate EBCDIC.

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

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

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

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

swab 交換輸入的每對位元組。 Unlike the
Unix dd, this works when an odd number of
bytes are read. If the input file contains
an odd number of bytes, the last byte is
simply copied (since there is nothing to
swap it with).

noerror
出錯時不停止。

notrunc
不截短輸出檔案。

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

由於 dd 命令允許二進位方式讀寫,所以特別適合在原始物理裝置上進行輸入/輸出。例如可以用下面的命令為磁碟片建立鏡像檔案:
dd if=/dev/fd0 of=disk.img bs=1440k
有趣的是,這個鏡像檔案能被 HD-Copy ,Winimage 等工具軟體讀出。再如把第一個硬碟的前 512 個位元組存為一個檔案:
dd if=/dev/hda of=disk.mbr bs=512 count=1

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.