linux命令筆記之dd

2021-07-09 05:23:27 字數 4012 閱讀 6182

例項:

建立乙個100m的空檔案

dd if=/dev/zero of=hello.txt bs=100m count=1

首先要了解兩個特殊的裝置:

/dev/null

:**站、無底洞

/dev/zero

:產生字元 ø

測試磁碟寫能力

time dd if=/dev/zero of=/test.dbf bs=8k count=300000

因為/dev/zero

是乙個偽裝置,它只產生空字元流,對它不會產生

io,所以,

io都會集中在

of檔案中,

of檔案只用於寫,所以這個命令相當於測試磁碟的寫能力。

ø測試磁碟讀能力

time dd if=/dev/sdb1 of=/dev/null bs=8k

因為/dev/sdb1

是乙個物理分割槽,對它的讀取會產生io,

/dev/null

是偽裝置,相當於黑洞,

of到該裝置不會產生

io,所以,這個命令的

io只發生在

/dev/sdb1

上,也相當於測試磁碟的讀能力。

ø測試同時讀寫能力

time dd if=/dev/sdb1 of=/test1.dbf bs=8k

這個命令下,乙個是物理分割槽,乙個是實際的檔案,對它們的讀寫都會產生

io(對

/dev/sdb1

是讀,對

/test1.dbf

是寫),假設他們都在乙個磁碟中,這個命令就相當於測試磁碟的同時讀寫能力。

備份將本地的/dev/hdx整盤備份到/dev/hdy :dd if=/dev/hdx of=/dev/hdy

將/dev/hdx全盤資料備份到指定路徑的image檔案:dd if=/dev/hdx of=/path/to/image

備份/dev/hdx全盤資料,並利用gzip工具進行壓縮,儲存到指定路徑:dd if=/dev/hdx | gzip

>/path/to/image.gz

恢復將備份檔案恢復到指定盤:dd if=/path/to/image of=/dev/hdx

將壓縮的備份檔案恢復到指定盤 :gzip -dc /path/to/image.gz | dd of=/dev/hdx

利用netcat遠端備份

在源主機上執行此命令備份/dev/hda:dd if=/dev/hda bs=16065b | netcat < targethost-ip >

1234在目的主機上執行此命令來接收資料並寫入/dev/hdc:netcat -l -p 1234 | dd of=/dev/hdc

bs=16065b

以下兩條指令是目的主機指令的變化分別採用bzip2 gzip對資料進行壓縮,並將備份檔案儲存在當

前目錄 :

netcat -l -p 1234 | bzip2 > partition.img

netcat -l -p 1234 | gzip > partition.img

備份mbr

備份:備份磁碟開始的512byte大小的mbr資訊到指定檔案:dd if=/dev/hdx of=/path/to/image

count=1 bs=512

恢復:將備份的mbr資訊寫到磁碟開始部分:dd if=/path/to/image of=/dev/hdx

備份軟盤

將軟碟機資料備份到當前目錄的disk.img檔案:dd if=/dev/fd0 of=disk.img count=1 bs=1440k

拷貝記憶體資料到硬碟

將記憶體裡的資料拷貝到root目錄下的mem.bin檔案:dd if=/dev/mem of=/root/mem.bin

bs=1024

從光碟拷貝iso映象

拷貝光碟資料到root資料夾下,並儲存為cd.iso檔案:dd if=/dev/cdrom of=/root/cd.iso

增加swap分割槽檔案大小

建立乙個足夠大的檔案(此處為256m):dd if=/dev/zero of=/swapfile bs=1024 count=262144

把這個檔案變成swap檔案:mkswap /swapfile

啟用這個swap檔案:swapon /swapfile

在每次開機的時候自動載入swap檔案, 需要在 /etc/fstab 檔案中增加一行:/swapfile swap

swap defaults 0 0

銷毀磁碟資料

利用隨機的資料填充硬碟:dd if=/dev/urandom of=/dev/hda1

在某些必要的場合可以用來銷毀資料。執行此操作以後,/dev/hda1將無法掛載,建立和拷貝操作

無法執行。

磁碟管理

得到最恰當的block size

通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統最佳的block size大小:

dd if=/dev/zero bs=1024 count=1000000 of=/root/1gb.filedd if=/dev/zero bs=2048 count=500000 of=/root/1gb.file

dd if=/dev/zero bs=4096 count=250000 of=/root/1gb.file

dd if=/dev/zero bs=8192 count=125000 of=/root/1gb.file

測試硬碟讀寫速度

通過兩個命令輸出的執行時間,可以計算出測試硬碟的讀/寫速度:

dd if=/root/1gb.file bs=64k | dd of=/dev/null

hdd if=/dev/zero of=/root/1gb.file bs=1024 count=1000000

修復硬碟

當硬碟較長時間(比如一兩年年)放置不使用後,磁碟上會產生magnetic flux point。當磁頭讀到

這些區域時會遇到困難,並可能導致i/o錯誤。當這種情況影響到硬碟的第乙個扇區時,可能導致

硬碟報廢。下面的命令有可能使這些資料起死回生。且這個過程是安全,高效的。

dd if=/dev/sda of=/dev/sda引數

含義 if

輸入裝置或者檔案 of

輸出裝置或檔案 bs

dd緩衝區。設定

dd時一次

io拷貝多少資料,它與輸入檔案和輸出檔案的

block size

都沒有直接聯絡。

一般來說,

bs越大,拷貝速度越快

skip 設定

dd時從輸入檔案中跳過多少個

dd緩衝區開始拷貝資料。一般在裸裝置有

offset

時使用

seek 設定

dd時從輸出檔案中跳過多少個

dd緩衝區開始寫入資料。一般在裸裝置有

offset

時使用

count 設定

dd的io數量。如果省略了

count

,表示完全拷貝輸入檔案到輸出檔案上

備份源備份目的地

適用引數

裸裝置裸裝置

if of bs skip seek count

裸裝置檔案系統

if of bs skip count

檔案系統

裸裝置if of bs seek

檔案系統

檔案系統

if of bs

因素 含義

block size dd

一次io

的buffer大小

offset

只適用於裸裝置,有些作業系統在裸裝置上保留一定的空間給內部使用,拷貝時要跳過這部分內容

block 0

每乙個oracle

資料檔案的頭都包含乙個與資料檔案所在表空間的

blocksize

的相等的

block

這個block

是不計算入

oracle

資料檔案的

bytes

的,但在作業系統中,它是會占用空間的。

Linux學習筆記 dd命令

dd命令 用於按照指定大小和個數的資料塊來複製檔案或轉換檔案 格式為 dd 引數 1 可以用dd命令從 dev zero裝置檔案中取出乙個大小為50m的資料塊,然後儲存成名為560 file的檔案 dd if dev cdrom of centos7.iso附 有些讀者會糾結bs塊大小與count塊...

Linux基礎之dd命令

1,測試寫 time dd if dev zero of tmp iotest bs 8k count 1000000 root grc cdh03 time dd if dev zero of tmp iotest bs 8k count 1000000 記錄了1000000 0 的讀入 記錄了1...

Linux之dd命令詳解

例4 建立乙個100m的空檔案 dd if dev zero of hello.txt bs 100m count 1 dev null,外號叫無底洞,你可以向它輸出任何資料,它通吃,並且不會撐著!dev zero,是乙個輸入裝置,你可你用它來初始化檔案。dev null 它是空裝置,也稱為位桶 b...