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 22:36
下一篇 2017-04-04 23:54

相關推薦

  • ThirdWeek_SecondDay

    Python學習筆記整理

    Linux干貨 2017-10-09
  • Linux基礎之計算機的組成及其功能

    1、描述計算機的組成及其功能: 答:計算機由 1.1、CPU(運算器、控制器)進行邏輯運算跟控制運算,寄存器、緩存 1.2、輸入單元(鍵盤、鼠標、手寫板等)、輸出單元(屏幕、打印機) 1.3、存儲器(內存、硬盤) 2、按系列羅列linux的發行版,并描述不同發行版之間的聯系與區別。 答:debian(ubuntu、mint、knopix)、slackware…

    2017-09-11
  • sed–?用于篩選和轉換文本的流編輯器

    sed?用于篩選和轉換文本的流編輯器命令格式:sed [OPTION] {script} file選項 ? ? ? -n, –quiet, –silent 抑制模式空間的自動打印?? echo -e “abc\ndef” | sed ‘p’ #輸出 abc # abc # def # d…

    Linux干貨 2017-08-15
  • Linux Network Manager

    Linux Network Manager Network簡述 Switch,Router簡述 Linux Network 配置方法 ifcfg家族命令 ip家族命令 rhel7 nmcli命令 配置文件 Network簡述 Network是什么? 網絡是將分布在地理位置不同的計算機通過物理線路的連接,在網絡軟件的管理下,實現數據通信的過程。&nb…

    Linux干貨 2016-04-05
  • Linux命令date命令詳解

    在linux環境中,熟練運用date命令來表示自己想要表示的時間,肯定可以給自己的工作帶來諸多方便,下面是詳細的使用說明和示例 在linux環境中,不管是編程還是其他維護,時間是必不可少的,也經常會用到時間的運算,熟練運用date命令來表示自己想要表示的時間,肯定可以給自己的工作帶來諸多方便。 1.命令格式:date[參數]… [+格式] 2.命…

    2017-07-18
  • Linux基礎學習總結(五)

    1、顯示當前系統上root、fedora或user1用戶的默認shell; grep -E ‘^(root|fedora|user1)\>’ /etc/passwd | awk -F ‘:’ ‘{print $7}’ 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); grep -E ‘…

    Linux干貨 2016-10-20

評論列表(1條)

  • renjin
    renjin 2017-04-05 14:30

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

欧美性久久久久