dd命令詳解及實戰應用

dd簡述

dd在linux中是 一個強大的命令,常用于拷貝大量數據,測試讀寫效能 ,清空硬盤數據(慎用),不僅如此,由于dd 允許以二進制方式讀寫,所以特別適合在原始設備上輸入、輸出。

dd與cp的區別

這里有必要說明一下,兩個命令都可用于拷貝,但是級別卻完全不一樣:cp是文件級別的讀取方式,而dd更底層,可以數據塊級別去讀取硬盤,由此可看出在效率上顯然dd更勝一籌;其次在較大數據拷貝中,cp是復制文件(其本質是新建),過程中經由操作系統處理,最終存放在硬盤上的數據是隨機分散的,并不連續,而dd的拷貝可以做到在硬盤上數據的存儲是連續的,其它不再枚舉,總之dd在較大數據量的備份場景,更加高效

dd常用參數

if=inputfile:指定源文件,即指定輸入文件、缺省為標準輸入,在LINUX中一切皆文件,因此可指定一些特殊的文件(如設備文件)用于特殊用途

of=outputfile:指定目標文件,即指定輸出文件,缺省為標準輸出

bs=N bytes:同時指定讀入/輸出的塊大小為N個字節,N為數字

count=N blocks:指定拷貝的塊數量,塊大小由bs指定。N為數字

通常最常用的參數也就這四個,事實上dd支持的參數非常之多,在此不過多枚舉(實際應用不是很多,需用到時在MAN下吧

命令格式及常見用法

1.備份整個盤(分區)的數據:dd if=/dev/sda of=/dev/sdb

2.備份整個盤(分區)數據到某個文件:dd if=/dev/sda of=/path/to/filename

*將文件內容還原到某硬盤:dd if=srcfile of=/dev/sda

3.備份整個盤(分區)并壓縮后保存至指定路徑:dd if=/dev/sda | gzip > /path/to/filename.gz

*將備份的壓縮文件還原到硬盤{分區}:gzip -dc /path/to/filename.gz | dd of=/dev/sda

4.備份與還原MBR:dd if=/dev/sda of=/path/to/filename bs=512 count=1

*bs用于指定備份的塊大小,單位為字節,這里表示將sda的第一個扇區(恰好512字節),也就是MBR存放的位置;count用于指定塊的數量

*還原:dd if=/path/to/filename of=/dev/sdb

5.拷貝內存內容到硬盤:dd if=/dev/mem of=/path/to/filename.mem bs=1024

6.拷貝光盤內容到硬盤:dd if=/dev/cdrom of=/path/to/filename.iso

7.增加swap分區文件大小

①創建一個相應大小的文件(空白文件,這里可以使用/dev/zero填充)

dd if=/dev/zero of=/swapfile bs=1024 count=100000;(根據需要自行調整大小,此處為100M)

②將此前創建的文件識別為swap文件

mkswap /swapfile

③啟用創建好的SWAP文件

swapon /swapfile

④掛載SWAP,mount掛載重啟后會失效,這里設定為自定掛載,打開/etc/fstab文件新增一行

/swapfile swap  swap default 0 0至此,完成swap大小的調整

8.銷毀硬盤數據(慎用)

dd if=/dev/urandom of=/dev/sdb ( 這里利用隨機數填充硬盤,某些特殊場合可以用來銷毀數據)

9.測試硬盤讀寫速度

①dd if=/dev/zero bs=1024 count=1000000  of=/path/to/test.1GB 測試寫入速度,通過命令執行時間計算

②dd if=/path/to/test.1GB bs=64K | dd of=/dev/null 測試讀取速度,通過命令執行時間計算

10.測試硬盤效能最佳塊大小

 dd if=/dev/zero bs=1024 count=1000000 of=/path/to/test.1GB

 dd if=/dev/zero bs=2048 count=500000 of=/path/to/test.1GB
 dd if=/dev/zero bs=4096 count=250000 of=/path/to/test.1GB
 dd if=/dev/zero bs=8192 count=125000 of=/path/to/test.1GB

*通過各命令執行的時間可大概測試最佳塊大小

11.某種程度上修復硬盤

dd if=/dev/sda of=/dev/sda

總結:dd命令很好很強大



原創文章,作者:sevenyellow,如若轉載,請注明出處:http://www.www58058.com/72551

(0)
sevenyellowsevenyellow
上一篇 2017-04-04
下一篇 2017-04-04

相關推薦

  • Linux命令中特殊符號的用法

    Linux命令中特殊符號的用法 在馬哥教育學習了將近一周的Linux運維,由最初對Linux系統的一無所知,到了解了Linux的發展歷程,學習了一些基本命令,驚嘆于Linux的強大功能。下面根據我學到的,介紹一下關于Linux命令中特殊符號的用法。 $的用法 1.$()或’’引用命令執行的結果 例如:如果我們想要創建一個以當前日期命名的目錄,可以執行 #mk…

    2017-07-15
  • 基于虛擬用戶控制的ftp服務

    FTP作為最常見的文件共享服務,可提供文件的上傳,下載等服務;其用戶可分為三類: 匿名用戶:即不需要用戶賬號與密碼即可登錄FTP服務器,此時登錄用戶將會被映射為系統上的ftp用戶。 系統用戶:即用FTP服務器上的用戶賬號與密碼登錄FTP服務器。此種方法雖然在一定程度上對登錄做出了限制,但由于系統賬號的相關權限,則增大了FTP服務器的系統風險; 虛擬用戶:用戶…

    Linux干貨 2016-10-23
  • 第十周-Centos啟動流程及Shell腳本編程

    一、CentOS啟動流程 POST –> Boot Sequence(BIOS) –> Boot Loader (MBR) –> Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init –…

    2017-10-14
  • haproxy實現rabbitmq負載均衡

    RabbitMQ簡介: 1、是實現AMQP(高級消息隊列協議)的消息中間件的一種。2、主要是為了實現系統之間的雙向解耦而實現的。當生產者大量產生數據時,消費者無法快速消費,那么需要一個中間層。保存這個數據。 一般提到 RabbitMQ 和消息,都會用到以下一些專有名詞:(1)生產(Producing)意思就是發送。發送消息的程序就是一個生產者(produce…

    Linux干貨 2017-06-29
  • 馬哥教育網絡班22期+第1周課程練習

    Linux的發行版以及不同發行版之間的聯系與區別    Linux發行版主要的大分支有三個:dibian  S.U.S.E  redhat 一個操作系統由kernel和application組成。編譯封裝的時候根據不同的application,可以編譯成不同的發行版本。 所有的linux發行版都是基于GPL的版權,它們…

    Linux干貨 2016-08-15
  • 第二周作業

    作業

    Linux干貨 2018-03-20

評論列表(1條)

  • renjin
    renjin 2017-04-05 14:30

    對dd命令的用法寫的很詳細,可以適當的插入幾張圖片,注意一下排版。這樣會好很多

欧美性久久久久