dd工具

dd

    dd命令:convert and copy a file

    用法:
        ddif=/PATH/FROM/SRC of=/PATH/TO/DEST
        bs=#:block size, 復制單元大小
        count=#:復制多少個bs

    of=file寫到所命名的文件而不是到標準輸出
    if=file從所命名文件讀取而不是從標準輸入
    bs=size指定塊大?。仁鞘莍bs也是obs)
        ibs=size一次 讀 size個byte
        obs=size 一次 寫 size個byte

    cbs=size 一次轉化size個byte
    skip=blocks從開頭忽略blocks個ibs大小的塊
    seek=blocks從開頭忽略blocks個obs大小的塊
    count=n只拷貝n個記錄
    conv=conversion[,conversion…] 用指定的參數轉換文件。
    轉換參數:
        ascii 轉換EBCDIC 為ASCII。
        ebcdic 轉換ASCII 為EBCDIC。
        block 轉換為長度為cbs 的記錄,不足部分用空格填充。
        unblock 替代cbs長度的每一行尾的空格為新行。
        lcase 把大寫字符轉換為小寫字符。
        ucase 把小寫字符轉換為大寫字符。
        swab 交換輸入的每對字節。
    nocreat 目標文件不存在則,報錯,不會自動創建文件
    noerror 出錯時不停止。
    notrunc 不截短輸出文件。  直接替換內容而不是給短輸出文件,不改變文件大小
    sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊

注意:skip=xxx是在備份時對if 后面的部分也就是原文件跳過多少塊再開始備份;seek=xxx則是在備份時對of 后面的部分也就是目標文件跳過多少塊再開始寫。

    磁盤拷貝:
        dd if=/dev/sdaof=/dev/sdb

    備份MBR:
        dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

    破壞MBR中的bootloader:
        dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

    有二進制文件fileA,size>2K。現在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,請問如何實現?
        #dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
            notrunc 不截短輸出文件。  直接替換內容而不是給短輸出文件,不改變文件大小

    備份:
        dd if=/dev/sdx of=/dev/sdy
        將本地的/dev/sdx整盤備份到/dev/sdy  設備對拷

        dd if=/dev/sdx of=/path/to/image
        將/dev/sdx全盤數據備份到指定路徑的image文件  將整個設備里的二進制內容保存為一個文件

        dd if=/dev/sdx | gzip >/path/to/image.gz
        備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑

    恢復:
        dd if=/path/to/image of=/dev/sdx
        將備份文件恢復到指定盤
        gzip -dc /path/to/image.gz | dd of=/dev/sdx
        將壓縮的備份文件恢復到指定盤

    
    拷貝內存資料到硬盤
        dd if=/dev/mem of=/root/mem.bin bs=1024
        將內存里的數據拷貝到root目錄下的mem.bin文件

    從光盤拷貝iso鏡像
        dd if=/dev/cdrom of=/root/cd.iso
        拷貝光盤數據到root文件夾下,并保存為cd.iso文件

    銷毀磁盤數據
        dd if=/dev/urandom of=/dev/sda1
        利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據。執行此操作以后,/dev/sda1將無法掛載,創建和拷貝操作無法執行。

    得到最恰當的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

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

    測試硬盤讀寫速度
        dd if=/root/1Gb.file bs=64k | dd of=/dev/null
        dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
        通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫速度

    修復硬盤
    dd if=/dev/sda of=/dev/sda

    當硬盤較長時間(比如1,2年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可能導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。

創建設備文件
mknod DEVNAME TYPE MAIN MI
mknod  設備名 b 1 1

如果和/dev下的設備的主次設備號都相同。則就是同一設備

原創文章,作者:yyw,如若轉載,請注明出處:http://www.www58058.com/42650

(1)
yywyyw
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • 用戶和用戶組相關的配置文件

    用戶和用戶組相關的配置文件 一、與用戶相關的配置文件 一般來說,與用戶配置相關的幾個文件如下: l  /etc/passwd: 最重要的文件,存儲著用戶的用戶名,UID,Shell等信息 l  /etc/shadow: 用戶密碼文件,使用sha-1算法加密存儲(注意該文件的權限) l  /etc/skel/: 用戶的模板文件,新…

    Linux干貨 2016-10-23
  • Nginx4大模塊——proxy、headers、upstream、stream模塊

    Nginx 應用程序發布: 灰度模型:          (1) 如果存在用戶會話;              從服務器上拆除會話;   &…

    Linux干貨 2016-10-29
  • 基礎命令

    1,對于Linux的實驗環境我們要用到虛擬機,往往每次上線都要登錄,這時候如果把用戶設為自動登錄就會方便許多,接下來就介紹下設置虛擬機的自動登錄 , /etc/gdm/custom.conf 這個就是設置自動登錄的一個配置文件,我們先來使用nano打開這個文件,如下 # GDM configuration storage 這是GDM的一個配置存儲 [daem…

    2017-11-19
  • 用戶管理命令之NBA版

    用戶管理命令之NBA版 本文純屬扯淡,如有不嚴謹之處,還請海涵。 1 groupadd 作用:創建一個屬組 格式:groupadd [選項] 屬組名 選項: -:選項為空 創建新屬組 -g:指定組GID,默認是GID+1 實例 1.1 添加屬組team,指定組ID為1111      groupadd -g …

    Linux干貨 2017-03-27
  • Linux常用命令說明

    個人認為把操作練習打在博客上比較愚蠢,關于操作部分我將以練習題的形式展示,每周固定練習這些基礎的題目 Linux常見命令練習 1.文本內容顯示 1.1cat: (1)顯示/root下adjtime文件內容 (2)把文件mm.txt的文件內容加上行號輸入到textfile2文件中 (3)把文件mm.txt和textfile2的文件內容加上行號(空白行不加)之后…

    Linux干貨 2016-10-29
  • 馬哥教育網絡班21期-第六周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; 3、刪除/tmp/rc.sysinit文件…

    Linux干貨 2016-08-05
欧美性久久久久