歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux系統中使用dd命令來轉換和拷貝文件

Linux系統中使用dd命令來轉換和拷貝文件

日期:2017/3/1 17:31:49   编辑:Linux技術

dd - 轉換和拷貝文件
當進行非強制的轉換的時候,使用指定的輸入和輸出塊大小拷貝文件 (默認是從標准輸入到標准輸出。)
它每次從輸入讀取指定大小的一個塊(默認是512字節)。 如果使用 bs=bytes 選項,並且沒有轉換,除了指定 sync, noerror, 或 notrunc 之外, 那麼dd將把全部讀到的數據(可以比請求讀的少) 寫到獨立的輸出塊去。 這個輸出塊的長度和讀到的數據 完全一樣,除非指定使用 sync(同步) 轉換,那樣的話,數據結尾處將追加NUL字符(或空格,見下)。
其他情況下,輸入的時候每次讀一個塊,然後處理,並將 輸出結果收集起來,最後寫到指定大小的數據塊中去。最 終的輸出塊可能會比指定的大小短一些。

如果你想要在線看 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命令刪除掉。系統默認使用標准輸入文件和標准輸出文件。

if=file
從 file 中讀而不是標准輸入。
of=file
寫到 file 裡去而不是標准輸出。除非指定 conv=notrunc ,否則, dd 將把 file 截為O字節(或由 seek= 選項指定的大小)
ibs=bytes
一次讀 bytes 字節。默認是512。
obs=bytes
一次寫 bytes 字節。默認是512。
bs=bytes
一次讀和寫 bytes 字節。這將覆蓋 ibs 和 obs 設定的值(並且,設定 bs 不等於同時將 ibs 和 obs 設為同一個值,至少在 只使用 sync, noerror 或 notrunc 轉換時是這樣的。因為bs規定,每個輸入塊都應作為單獨 的數據塊拷貝到輸出,而不把較短的塊組合到一起)。
cbs=bytes
為 block 轉換和 unblock 轉換指定轉換塊的大小。
skip=blocks
在拷貝之前,跳過輸入文件的前 blocks 塊,每塊大小為 ibs-byte 字節。
seek=blocks
在拷貝之前,跳過輸出文件的前 blocks 塊,每塊大小為 obs-byte 字節。
count=blocks
只拷貝輸入文件的前 blocks 塊(每塊的大小為 ibs-byte 字節),而不是全部內容,直到文件末尾。

轉換
conv=轉換[,轉換]...
將文件按 轉換 參數指定的方式轉換(在lq,rq兩邊沒有空格)。

轉換方式包括:
ascii
將EBCDIC轉換成ascii。
ebcdic
將ascii轉換成ebcdic。
ibm
將ascii轉換成alternative ebcdic。
block
每一行輸入,無論長短,輸出都是 cbs 字節,並且其中的lq換行rq(NEWLINE,即c中的')用 空格替換。如有必要,行尾會填充空格。
unblock
用lq換行rq替換每個輸入塊( cbs 字節大小)末尾的空格。
lcase
將大寫字母轉換成小寫。
ucase
將小寫字母轉換成大寫。
swab
交換每對輸入字節。如果讀入的字節數是奇數,最後 一個字節只是簡單的復制到輸出(因為沒有能跟它交換的 字節了)(POSIX 1003.26,PASC翻譯1003.2 3號和4號)。
noerror
發生讀錯誤時,繼續進行。
notrunc
不截斷輸出文件。
sync
用0填充到每個輸入塊的末尾,使其大小為 ibs 字節。

例:

復制代碼代碼如下:
[root@localhost ~]# dd if=/dev/hdx of=/dev/hdy #將本地的/dev/hdx整盤備份到/dev/hdy
[root@localhost ~]# dd if=/dev/hdx of=/path/to/image #將/dev/hdx全盤數據備份到指定路徑的image文件
[root@localhost ~]# dd if=/dev/hdx | gzip >/path/to/image.gz #備份/dev/hdx全盤數據,並利用gzip工具進行壓縮,保存到指定路徑
[root@localhost ~]# dd if=/path/to/image of=/dev/hdx # 將備份文件恢復到指定盤
[root@localhost ~]# gzip -dc /path/to/image.gz | dd of=/dev/hdx #將壓縮的備份文件恢復到指定盤
[root@localhost ~]# dd if=/dev/hdx of=/path/to/image count=1 bs=512 #備份磁盤開始的512Byte大小的MBR信息到指定文件
[root@localhost ~]# dd if=/dev/cdrom of=/root/cd.iso #拷貝光盤數據到root文件夾下,並保存為cd.iso文件

Copyright © Linux教程網 All Rights Reserved