歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

dd備份和恢復

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