例項:
建立乙個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...