歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> dd備份和恢復

dd備份和恢復

日期:2017/2/27 15:59:53   编辑:Linux教程

linux/unix dd命令是一個非常好的管理磁盤命令

dd命令作用:指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換,起到一個初始化磁盤的作用

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

創建基於文件的sswap分區:

a. dd if=/dev/zero of=/project/swapfile bs=1024 count=500000 => 通過zero文件生成一個5G的文件

b. mkswap /project/swapfile => makes file usable for swapping生成swap分區文件

c. swapon /project/swapfile => enables swapping,使swap分區生效

d. swapoff/project/swapfile => 關閉指定的swap分區

e. swapoff -a => disables all swapping for entries listed in: /etc/fstab關閉所有fstab中的swap分區

備份:

[root@server ~]# dd if=/dev/sda of=/dev/sdb => 備份整個磁盤到另外一個磁盤

[root@server ~]# dd if=/dev/sdb of=sda.bak => 備份整個磁盤為某個文件

[root@server ~]# dd if=/dev/sda | gzip > sda.bak.gz => 備份並且壓縮

[root@server ~]# dd if=/dev/sdaof=dbt.bak count=1 bs=512 skip=446

=> 跳過前446字節備份磁盤第一扇區的後66字節DPT信息到指定文件

恢復:

[root@server ~]# dd if=/dev/sdb of=/dev/sda

[root@server ~]# gzip -dc sda.bak.gz | dd of=/dev/sda

[root@server ~]# dd if=/path/to/image of=/dev/hdx count=1 bs=512 seek=446
=> 將備份DPT信息寫到MBR後面的66字節

銷毀數據:

[root@server ~]# dd if=/dev/urandom of=/dev/sda1 => 利用隨機數填充硬盤數據,達到銷毀數據的作用

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

注意:其中磁盤要以 -o sync的選項掛載,否則會導致數據寫入到緩存中,而非寫入磁盤上去,導致測試不准確
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

測試讀寫速度

注意:其中磁盤要以 -o sync的選項掛載,否則會導致數據寫入到緩存中,而非寫入磁盤上去,導致測試不准確
[root@server ~]# mount -o sync,remount /

[root@server ~]# mount | grep sync

/dev/sda2 on / type ext4 (rw,sync)

[root@server ~]# dd if=/dev/zero of=/tmp/test.dd bs=4096 count=5000 => 測試寫入速度

[root@server ~]# dd if=/tmp/test.dd of=/dev/null bs=4096 count=5000=> 讀取測試

Copyright © Linux教程網 All Rights Reserved