| 一、dd指令簡介 dd 是 Linux/UNIX 下的一個非常有用的命令,作用是用指定大小的塊拷貝一個檔案,並在拷貝 的同時進行指定的轉換 =================================================================== 二、dd指令使用 1、文法格式
dd [operand] dd [option] 2、選項參數
dd指令選項詳解 |
if=file |
輸入檔案名稱,預設為標準輸入 |
of=file |
輸出檔案名,預設為標準輸出 |
ibs=bytes |
一次讀入 bytes 個位元組(即一個塊大小為 bytes 個位元組) |
obs=bytes |
一次寫 bytes 個位元組(即一個塊大小為 bytes 個位元組) |
bs=bytes |
同時設定讀寫塊的大小為 bytes ,可代替 ibs 和 obs |
cbs=bytes |
一次轉換 bytes 個位元組,即轉換緩衝區大小 |
skip=blocks |
從輸入檔案開頭跳過 blocks 個塊後再開始複製 |
seek=blocks |
從輸出檔案開頭跳過 blocks 個塊後再開始複製。(通常只有當輸出檔案是磁碟或磁帶時才有效) |
count=blocks |
僅拷貝 blocks 個塊,塊大小等於 ibs 指定的位元組數 |
conv=conversion[,conversion...] |
用指定的參數轉換檔 |
ascii |
轉換 EBCDIC 為 ASCII |
ebcdic |
轉換 ASCII 為 EBCDIC |
ibm |
轉換 ASCII 為 alternate EBCDIC |
block |
把每一行轉換為長度為 cbs 的記錄,不足部分用空格填充 |
unblock |
使每一行的長度都為 cbs ,不足部分用空格填充 |
lcase |
把大寫字元轉換為小寫字元 |
ucase |
把小寫字元轉換為大寫字元 |
swab |
交換輸入的每對位元組 |
noerror |
出錯時不停止 |
notrunc |
不截短輸出檔案 |
sync |
把每個輸入塊填充到ibs個位元組,不足部分用空(NUL)字元補齊 |
注意:指定數位地方若以下列字元結尾乘以相應的數字:b=512, c=1, k=1024, w=2, xm=number m,kB=1000,K=1024,MB=1000*1000,M=1024*1024,GB=1000*1000*1000,G=1024*1024*1024 |
===================================================================
三、dd執行個體講解 1、資料備份與恢複 1)整盤資料備份與恢複 (1)備份 ##將本地的/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工具進行壓縮,儲存到指定路徑(bzip2工具也一樣可使用) dd if=/dev/hdx | gzip > /path/to/image.gz (2)恢複 ##將備份檔案恢複到指定盤 dd if=/path/to/image of=/dev/hdx ##將壓縮的備份檔案恢複到指定盤 gzip -dc /path/to/image.gz | dd of=/dev/hdx ----------------------------------------------------------------------------------------------------------------------------
2)利用netcat與dd指令進行遠程備份 (1)備份 假設:接收端的IP地址為:192.168.1.200;發送端的IP地址為:192.168.1.100 第一步:在接收端上執行命令:nc -l 1234 | dd of=/dev/sdb1 或者 nc -l 1234 | gzip -dc | dd of=/dev/sdb1 ,即:nc指令的輸出為標準輸出,通過管道將nc指令的輸出作為dd指令的輸入,最後將資料寫入/dev/sdb1中 (2)恢複 第二步:在發送端上執行命令:dd if=/dev/hda1 | nc 192.168.1.200 1234 或者 dd if=/dev/hda1 | gzip | nc 192.168.1.200 1234,即:將/dev/hda1裝置上的資料作為dd的輸入,而標準輸出作為dd指令的輸出,但是由於管道,所以將dd的標準輸出將作為nc指令的輸出 ----------------------------------------------------------------------------------------------------------------------------
3)備份MBR (1)備份 ##備份磁碟開始的512Byte大小的MBR資訊到指定檔案 dd if=/dev/hdx of=/path/to/image count=1 bs=512 (2)恢複 ## 將備份的MBR資訊寫到磁碟開始部分 dd if=/path/to/image of=/dev/hdx ----------------------------------------------------------------------------------------------------------------------------
4)備份磁碟片 ##將軟碟機資料備份到目前的目錄的disk.img檔案 dd if=/dev/fd0 of=disk.img count=1 bs=1440k ---------------------------------------------------------------------------------------------------------------------------- 5) 拷貝記憶體資料到硬碟 ## 將記憶體裡的資料拷貝到backup目錄下的mem.bin檔案 dd if=/dev/mem of=/backup/mem.bin bs=1024 ---------------------------------------------------------------------------------------------------------------------------- 6)將光碟片製作成ISO鏡像檔案 ##拷貝光碟片資料到backup檔案夾下,並儲存為cd.iso檔案,再進行燒錄 dd if=/dev/cdrom of=/backup/cd.iso cdrecord -v cd.iso ---------------------------------------------------------------------------------------------------------------------------- 2、增加swap分區檔案大小 第一步:建立一個足夠大的檔案(250M) 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 注意:查看當前swap使用方式,請查看檔案/proc/swaps;建立交換分區其實還有另一種方法:fdisk指令法 ---------------------------------------------------------------------------------------------------------------------------- 3、銷毀磁碟資料 ##利用隨機的資料填充硬碟,在某些必要的場合可以用來銷毀資料。執行此操作以後,/dev/hda1將無法掛載,建立和拷貝操作無法執行 dd if=/dev/urandom of=/dev/hda1 ---------------------------------------------------------------------------------------------------------------------------- 4、磁碟管理 (1) 得到最恰當的block size ##通過比較dd指令輸出中所顯示的命令執行時間(選時間最少的那個),即可確定系統最佳的block size大小 dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file dd 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
由可得到,/dev/sdb這塊硬碟最好使用block size=4096最好 (2) 測試硬碟讀寫速度 ##通過下面兩個命令輸出的執行時間,可以計算出測試硬碟的讀/寫速度 dd if=/root/1Gb.file bs=64k | dd of=/dev/null dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
由可知:/dev/sdb這塊硬碟的寫的速度
由可知:/dev/sdb這塊硬碟的讀的速度 (3)修複硬碟 ##當硬碟較長時間(比如1,2年)放置不使用後,磁碟上會產生magnetic flux point。當磁頭讀到這些地區時會遇到困難,並可能導致I/O錯誤。當這種情況影響到硬碟的第一個扇區時,可能導致硬碟報廢。上邊的命令有可能使這些數 據起死回生。且這個過程是安全,高效的 dd if=/dev/sda of=/dev/sda
|