linux dd命令的使用介紹

2021-12-30 12:11:53 字數 2418 閱讀 2238

dd命令用於複製檔案並對原檔案的內容進行轉換和格式化處理。

建議在有需要的時候使用dd 對物理磁碟操作,如果是檔案系統的話還是使用tar backup cpio等其他命令更加方便。另外,使用dd對磁碟操作時,最好使用塊裝置檔案。

[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1m count=1

1+0 records in

1+0 records out

1048576 bytes (1.0 mb) copied, 0.006107 seconds, 172 mb/s

[root@localhost text]# du -sh sun.txt

1.1m sun.txt該命令建立了乙個1m大小的檔案sun.txt,其中引數解釋:

if 代表輸入檔案。如果不指定if,預設就會從stdin中讀取輸入。 of 代表輸出檔案。如果不指定of,預設就會將stdout作為預設輸出。 bs 代表位元組為單位的塊大小。 count 代表被複製的塊數。 /dev/zero 是乙個字元裝置,會不斷返回0值位元組(\0)

linux中i/o裝置分為兩類:字元裝置和塊裝置。兩種裝置本身沒有嚴格限制,但是,基於不同的功能進行了分類。

(1)字元裝置:提供連續的資料流,應用程式可以順序讀取,通常不支援隨機訪問。相反,此類裝置支援按位元組/字元來讀寫資料。

舉例來說,鍵盤、串列埠、數據機都是典型的字元裝置。

(2)塊裝置:應用程式可以隨機訪問裝置資料,程式可自行確定讀取資料的位置。硬碟、軟盤、cd-rom驅動器和快閃儲存器都是典型的塊裝置,

應用程式可以定址磁碟上的任何位置,並由此讀取資料。此外,資料的讀寫只能以塊(通常是512b)的倍數進行。與字元裝置不同,塊裝置並不支援基於字元的定址。

總結一下,這兩種型別的裝置的根本區別在於它們是否可以被隨機訪問。字元裝置只能順序讀取,塊裝置可以隨機讀取。dd是乙個非常使用高效的命令,他的作用是用指定大小的塊拷貝乙個檔案,並在拷貝的同時進行指定的轉換。

備份整個磁碟到磁碟

#將sdx整盤備份到sdy中去

dd if=/dev/sdx of=/dev/dev/sdy備份整盤到目錄

#將sdx整盤被分到目錄中去

dd if=/dev/sdx of=/path/back整盤備份並壓縮

#整盤壓縮後備份到制動路徑

dd if=/dev/sdx | gzip > /path/back.gz整盤恢復

#磁碟到磁碟

dd if=/dev/sdy of=/dev/md0

#目錄到磁碟

dd if=/path/dir of=/dev/md0整盤的壓縮檔案恢復

#將檔案解壓縮到標準輸出,通過管道用dd輸出到磁碟

#-d解壓;-c解壓縮到標準輸出

gzip -dc /path/back.gz | dd of=/dev/md0得到最恰當的block size

#通過執行時間確定系統的最佳block size

dd if=/dev/zero bs=1024 count=1000000 of=/g.file

dd if=/dev/zero bs=2048 count=500000 of=/g.file

dd if=/dev/zero bs=4096 count=250000 of=/g.file測試讀寫速度

#測試讀

dd if=/dev/zero of=/1g.file bs=1024 count=1000000

#測試寫

dd if=/1g.file bs=64k | dd of=/dev/nulldd if=/dev/sdx of=sdxmbr.bak bs=512 count=1

dd if=sdxmbr.bak of=/dev/sdx bs=512 count=1修復硬碟

當硬碟長時間未使用,磁碟會產生消磁點。當磁頭讀到這些區域時會遇到困難,容易產生i/o錯誤。如果這些情況發生到第乙個扇區時,可能會導致報廢。所以使用磁碟修復功能,這個過程安全高效

dd if=/dev/sda of=/dev/sda複製記憶體中的資料

dd if=/dev/mem of=/root/mem.bin bs=1024生成映象

dd if=/dev/cdrom of=/root/cdrom.iso銷毀磁碟資料

#利用隨機數填充資料,

dd if=/dev/urandom of=/dev/sda1自己的一點新理解(可能與題 主的 「站在應用的角度」不合,但如果真要在應用程式的角度,大多是不需要考慮裝置型別的,只需要關心作業系統抽象出來的介面就可以了。除非你的應用有自己的io管理,比如oracle的asm,作業系統只需要把系統識別到的原始裝置暴露給oracle,並把裝置的屬主給oracle,oracle會有自己的抽象層來對原始裝置進行管理自己完成和自己上層應用的互動):

@in nek 曾提到的我們 受 到國內教材的 毒害(字元裝置 的順序訪問,塊裝置 的隨機訪問 ),國外 好像 也是這樣的教材。

linux dd命令使用詳解

dd 的主要選項 指定數字的地方若以下列字元結尾乘以相應的數字 b 512,c 1,k 1024,w 2,xm number m if file 輸入檔名,預設為標準輸入。of file 輸出檔名,預設為標準輸出。ibs bytes 一次讀入 bytes 個位元組 即乙個塊大小為 bytes 個位元...

linux dd命令使用詳解

dd 的主要選項 指定數字的地方若以下列字元結尾乘以相應的數字 b 512,c 1,k 1024,w 2,xm number m if file 輸入檔名,預設為標準輸入。of file 輸出檔名,預設為標準輸出。ibs bytes 一次讀入 bytes 個位元組 即乙個塊大小為 bytes 個位元...

linux dd命令詳解

dd 使用dd這個linux命令可以建立一定大小檔案。linux建立檔案命令 dd命令 把指定的輸入檔案拷貝到指定的輸出檔案中,並且在拷貝的過程中可以進行格式轉換。語法 code copy to clipboard dd 選項 quote if 輸入檔案 或裝置名稱 of 輸出檔案 或裝置名稱 ib...