dd linux 尾部新增0 dd使用方法詳解

2021-10-13 04:57:04 字數 3540 閱讀 7629

先簡要介紹dd的引數,後邊通過幾個例項介紹dd的應用,水平有限文中有什麼錯誤請大家指正

dd 是 linux/unix 下的乙個非常有用的命令,作用是用指定大小的塊拷貝乙個檔案,並在拷貝的同時進行指定的轉換。

1. 命令簡介

dd 的主要選項:

指定數字的地方若以下列字元結尾乘以相應的數字:

b=512, c=1, k=1024, w=2, xm=number m

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)字元補齊。

2.例項分析

2.1.資料備份與恢復

2.1.1整盤資料備份與恢復

備份:dd if=/dev/hdx of=/dev/hdy

將本地的/dev/hdx整盤備份到/dev/hdy

dd if=/dev/hdx of=/path/to/image

將/dev/hdx全盤資料備份到指定路徑的image檔案

dd if=/dev/hdx | gzip >/path/to/image.gz

備份/dev/hdx全盤資料,並利用gzip工具進行壓縮,儲存到指定路徑

恢復:dd if=/path/to/image of=/dev/hdx

將備份檔案恢復到指定盤

gzip -dc /path/to/image.gz | dd of=/dev/hdx

將壓縮的備份檔案恢復到指定盤

2.1.2.利用netcat遠端備份

dd if=/dev/hda bs=16065b | netcat < targethost-ip > 1234

在源主機上執行此命令備份/dev/hda

netcat -l -p 1234 | dd of=/dev/hdc bs=16065b

在目的主機上執行此命令來接收資料並寫入/dev/hdc

netcat -l -p 1234 | bzip2 > partition.img

netcat -l -p 1234 | gzip > partition.img

以上兩條指令是目的主機指令的變化分別採用bzip2 gzip對資料進行壓縮,並將備份檔案儲存在當前目錄。

2.1.3.備份mbr

備份:dd if=/dev/hdx of=/path/to/image count=1 bs=512

備份磁碟開始的512byte大小的mbr資訊到指定檔案

恢復:dd if=/path/to/image of=/dev/hdx

將備份的mbr資訊寫到磁碟開始部分

2.1.4.備份軟盤

dd if=/dev/fd0 of=disk.img count=1 bs=1440k

將軟碟機資料備份到當前目錄的disk.img檔案

2.1.5.拷貝記憶體資料到硬碟

dd if=/dev/mem of=/root/mem.bin bs=1024

將記憶體裡的資料拷貝到root目錄下的mem.bin檔案

2.1.6.從光碟拷貝iso映象

dd if=/dev/cdrom of=/root/cd.iso

拷貝光碟資料到root資料夾下,並儲存為cd.iso檔案

2.2.增加swap分割槽檔案大小

dd if=/dev/zero of=/swapfile bs=1024 count=262144

建立乙個足夠大的檔案(此處為256m)

mkswap /swapfile

把這個檔案變成swap檔案

swapon /swapfile

啟用這個swap檔案

/swapfile swap swap defaults 0 0

在每次開機的時候自動載入swap檔案, 需要在 /etc/fstab 檔案中增加一行

2.3.銷毀磁碟資料

dd if=/dev/urandom of=/dev/hda1

利用隨機的資料填充硬碟,在某些必要的場合可以用來銷毀資料。執行此操作以後,/dev/hda1將無法掛載,建立和拷貝操作無法執行。

2.4磁碟管理

2.4.1.得到最恰當的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大小

2.4.2測試硬碟讀寫速度

dd if=/root/1gb.file bs=64k | dd of=/dev/null

dd if=/dev/zero of=/root/1gb.file bs=1024 count=1000000

通過上兩個命令輸出的執行時間,可以計算出測試硬碟的讀/寫速度

2.4.3.修復硬碟

dd if=/dev/sda of=/dev/sda

當硬碟較長時間(比如1,2年)放置不使用後,磁碟上會產生magnetic flux point。當磁頭讀到這些區域時會遇到困難,並可能導致i/o錯誤。當這種情況影響到硬碟的第乙個扇區時,可能導致硬碟報廢。上邊的命令有可能使這些資料起死回生。且這個過程是安全,高效的

訊息尾部新增時間

訊息尾部新增時間 前言我們如何在傳送訊息的尾部新增事件呢?如以下這種效果 可能我們首先想到訊息的div加定位position relative 右側加個padding right 然後在time的span加position absolute 如果一行是完全ok的,但是多行的情況下就不行的非常醜陋。我...

pyqt5 tablewidget 尾部新增行列

1.尾部根據 字典 資料,尾部新增新行與新列對應資料 try for row name in glo.dict.keys row cnt self.mytablewidget.rowcount 返回當前行數 尾部 self.mytablewidget.insertrow row cnt 尾部插入一行...

一維陣列的基礎及頭部 尾部新增操作

一維陣列的定義方式 int arr int len arr.length int arr new int 10 每個格仔的預設值是0 int arr new int 不常用 遍歷方式 for 下標遍歷 for int i 0 iforeach語句 for int value arr system.o...