- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
Linux之dd命令
歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個技術(shù)小知識。
Linux之dd命令
掌握dd命令:Linux 系統(tǒng)數(shù)據(jù)管理的終極工具
dd命令是一款功能強(qiáng)大的工具,用于在Linux系統(tǒng)上進(jìn)行底層數(shù)據(jù)復(fù)制和轉(zhuǎn)換。dd代表“數(shù)據(jù)復(fù)制器”(data duplicator),常被用來創(chuàng)建文件、分區(qū)或整個磁盤的精確副本,因此在創(chuàng)建備份、克隆硬盤或?qū)⒋疟P映像寫入物理介質(zhì)時非常有用。這個命令可以在文件或設(shè)備之間復(fù)制和轉(zhuǎn)換數(shù)據(jù),并提供了控制塊大小、跳過或查找數(shù)據(jù),甚至應(yīng)用壓縮或字節(jié)交換等過濾器的選項(xiàng)。由于它可以在如此基礎(chǔ)的層面上工作,使用dd時必須非常謹(jǐn)慎,因?yàn)殄e誤的使用可能導(dǎo)致數(shù)據(jù)丟失或損壞。
接下來,我們將通過一些易于理解的例子來討論該工具的工作原理。這里提到的所有示例都在centos7上進(jìn)行了測試。
Linux dd命令簡介
簡而言之,dd命令允許你復(fù)制和轉(zhuǎn)換文件。這個工具提供了一些操作數(shù),你可以使用它們來指定你想要的格式。以下是man手冊中描述的命令通用語法:
dd [參數(shù)]...
dd [選項(xiàng)]
使用dd命令從ISO文件創(chuàng)建可啟動的USB驅(qū)動器
在Linux中,dd命令的一個常見用途是從ISO文件創(chuàng)建可啟動的USB驅(qū)動器。這通常在準(zhǔn)備安裝操作系統(tǒng)的USB盤時使用。命令如下所示:
sudo dd if=/path/to/your.iso of=/dev/sdX bs=4M status=progress && sync
在這個例子中:
if=/path/to/your.iso 指定了輸入文件,即ISO映像。
of=/dev/sdX 指定了輸出文件,即USB驅(qū)動器(將X替換為你USB設(shè)備的對應(yīng)字母)。
bs=4M 設(shè)置塊大小為4兆字節(jié),優(yōu)化了復(fù)制過程。
status=progress 提供了復(fù)制過程的實(shí)時更新。
sync 確保在完成之前所有數(shù)據(jù)都寫入到USB驅(qū)動器。
這個命令將創(chuàng)建一個可啟動的USB驅(qū)動器,可以用于安裝ISO文件中包含的操作系統(tǒng)。
常見問題解答:
以下是一些問答式的例子,可以幫助你更好地了解dd命令的使用方法。
Q1. 如何使用dd命令更改輸入文本的大小寫?
假設(shè)你有一些用小寫字母寫的文本行,現(xiàn)在需要快速將它們轉(zhuǎn)換為大寫字母。你可以使用conv命令行選項(xiàng)(其值為ucase)來實(shí)現(xiàn)。
例如:
dd conv=ucase
hello!www.tjdsmy.cn
以下是命令及輸入文本的截圖。按下組合鍵Ctrl+d后,dd命令識別到輸入結(jié)束,隨后生成以下輸出:
dd conv=ucase
hello!www.tjdsmy.cn
HELLO!WWW.LINUXMI.COM
0+1
HELLO!WWW.LINUXMI.COM
HELLO!WWW.LINUXMI . COM
0+1
記錄了+3 的讀入
記錄了0+1 的寫出
48字節(jié)已復(fù)制,278.511 s,0.0 kB/s
如你所見,輸入的文本已從小寫轉(zhuǎn)換為大寫。最后三行只是一些操作相關(guān)的統(tǒng)計(jì)信息。
注意:同樣地,你也可以使用lcase選項(xiàng)將大寫字母轉(zhuǎn)換為小寫。
Q2. 如何從文件讀取并寫入文件?
在上面的例子中,我們通過標(biāo)準(zhǔn)輸入(stdin)輸入了文本。不過,你也可以使用輸入和輸出文件。要指定輸入和輸出文件的名稱,可以使用if和of命令行選項(xiàng)。
例如,如果你想將file1中的文本大小寫轉(zhuǎn)換后寫入file2,可以這樣做:
dd if=file1 of=file2 conv=ucase
cat file1
hello!www.tjdsmy.cn
cat file2
dd if=file1 of=file2 conv=ucase
記錄了+1 的讀入
記錄了+1 的寫出
22字節(jié)已復(fù)制,0.00130236 S,16.9 kB/s
cat file2
HELLO!WWWLINUXMI . COM
Q3. 如何在讀取輸入時跳過文本?
如果你希望在讀取輸入文本時跳過一些初始字節(jié),可以使用skip選項(xiàng),該選項(xiàng)需要一個數(shù)值。如果這個值為’N’,dd會跳過輸入開頭的N個ibs大小的塊。這就引出了ibs選項(xiàng),它用來指定工具每次讀取的字節(jié)數(shù)(默認(rèn)是512)。
假設(shè)你想跳過輸入文件的前6個字節(jié),你需要先將ibs設(shè)為6,然后將skip值設(shè)為1,這樣工具在讀取輸入文件時就會跳過1個6字節(jié)的塊。
所以你可以看到,讀取file1時”hello!”被跳過了——這就是它沒有出現(xiàn)在file2中的原因。
dd if=file1 of=file2 conv=ucase ibs=6 skip=1
記錄了2+1 的讀入
記錄了0+1 的寫出
16字節(jié)已復(fù)制,0.000694868 S,23.0kB/s
cat file2
WWW . LINUXMI . COM
Q4. 如何在輸出中交換每對輸入字節(jié)?
如果你有這樣的需求,可以使用dd命令交換每對輸入字節(jié)。你可以通過為conv選項(xiàng)設(shè)置swab值來實(shí)現(xiàn)。以下截圖可以更清楚地說明這一點(diǎn):
dd if=file1 of=file2 conv=swab
記錄了+1 的讀入
記錄了+1 的寫出
22字節(jié)已復(fù)制,0.000543071 s,40.5 kB/s
cat file2
ehll!oww.wilunmx.ioc
Q5. 如何讓dd命令只在輸出文件不存在時才工作?
如果你希望dd命令在輸出文件已經(jīng)存在時不進(jìn)行任何操作,可以使用conv選項(xiàng)的excl值來實(shí)現(xiàn)這一條件。
下面的截圖展示了這一用法:
dd if=file1 of=file3 conv=excl
dd:打開‘file3'失?。何募汛嬖?/span>
Q6. 如何確保在追加模式下更新輸出文件?
默認(rèn)情況下,dd會覆蓋已有的輸出文件。如果你希望dd命令將文本追加到輸出文件的末尾,可以使用oflag選項(xiàng)中的append值和conv選項(xiàng)中的notrunc值。
例如:
dd if=file1 of=file3 oflag=append conv=notrunc
以下是該命令的實(shí)際操作示例:
cat file3
hello!www.tjdsmy.cn
dd if=file1 of=file3 oflag=app end conv=notrunc
記錄了θ+1 的讀入
記錄了0+1 的寫出
22字節(jié)已復(fù)制,0.00106453 s,20.7 kB/s
cat file3
hello!www.tjdsmy.cn
hello!www.tjdsmy.cn
dd if=file1 of=file3 oflag=app end conv=notrunc
記錄了θ+1 的讀入
記錄了+1 的寫出
22字節(jié)已復(fù)制,0.000571509 s,38.5 kB/s
cat file3
hello!www.tjdsmy.cn
hello!www.tjdsmy.cn
hello!www.tjdsmy.cn
Q7. 如何讓dd命令不創(chuàng)建輸出文件?
如果你希望dd命令在輸出文件不存在時不創(chuàng)建該文件,可以使用conv選項(xiàng)的nocreat值。
例如:
cat file7
cat:file7:沒有那個文件或目錄
dd if=file1 of=file7 oflag=app end conv=notrunc
記錄了+1 的讀入
記錄了+1 的寫出
22字節(jié)已復(fù)制,0.00112261 s,19.6 kB/s
Q8. 如何控制stderr上的信息級別?
如果你想限制dd命令在stderr上輸出的信息量,可以使用status選項(xiàng)。例如,如果你只想顯示錯誤信息,可以將該選項(xiàng)的值設(shè)置為none:
dd if=file1 of=file3 status=none
其他可用值包括noxfer和progress。以下是man手冊對status選項(xiàng)的說明:
status=LEVEL 打印到stderr的信息級別;
‘none’ 僅顯示錯誤信息,’noxfer’ 抑制最終傳輸統(tǒng)計(jì)信息,’progress’ 顯示定期傳輸統(tǒng)計(jì)信息。
這里討論的這些示例只是dd命令功能的一部分。實(shí)際上,你可以使用dd命令創(chuàng)建虛擬文件系統(tǒng)以及對硬盤或系統(tǒng)分區(qū)進(jìn)行備份。想要了解更多關(guān)于dd命令的信息,可以查閱它的man手冊。
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時,藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識,藍(lán)隊(duì)云期待與你一起探索。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP