您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何正確的在Linux中使用dd命令,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
dd命令的解釋
dd:用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉換。
注意:指定數字的地方若以下列字符結尾,則乘以相應的數字:b=512;c=1;k=1024;w=2
參數注釋:
1. if=文件名:輸入文件名,缺省為標準輸入。即指定源文件。< if=input file >
2. of=文件名:輸出文件名,缺省為標準輸出。即指定目的文件。< of=output file >
3. ibs=bytes:一次讀入bytes個字節,即指定一個塊大小為bytes個字節。
obs=bytes:一次輸出bytes個字節,即指定一個塊大小為bytes個字節。
bs=bytes:同時設置讀入/輸出的塊大小為bytes個字節。
4. cbs=bytes:一次轉換bytes個字節,即指定轉換緩沖區大小。
5. skip=blocks:從輸入文件開頭跳過blocks個塊后再開始復制。
6. seek=blocks:從輸出文件開頭跳過blocks個塊后再開始復制。
注意:通常只用當輸出文件是磁盤或磁帶時才有效,即備份到磁盤或磁帶時才有效。
7. count=blocks:僅拷貝blocks個塊,塊大小等于ibs指定的字節數。
8. conv=conversion:用指定的參數轉換文件。
ascii:轉換ebcdic為ascii
ebcdic:轉換ascii為ebcdic
ibm:轉換ascii為alternate ebcdic
block:把每一行轉換為長度為cbs,不足部分用空格填充
unblock:使每一行的長度都為cbs,不足部分用空格填充
lcase:把大寫字符轉換為小寫字符
ucase:把小寫字符轉換為大寫字符
swab:交換輸入的每對字節
noerror:出錯時不停止
notrunc:不截短輸出文件
sync:將每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊。
為驅動器和分區制作完美副本
如果你研究足夠深入,可以用dd執行各種任務,但它最出色的功能就是讓你可以玩轉分區。當然,可以使用tar甚至scp來復制整個文件系統,辦法就是從一臺計算機復制文件,然后將它們原封不動地粘貼到另一臺計算機上新安裝的Linux。但是,由于那些文件系統歸檔不是完整的鏡像,它們需要在兩頭都運行主機操作系統作為基礎。
另一方面,使用dd可以為幾乎任何數字化內容制作逐字節對應的完美鏡像。但是在你開始將分區從一個地方復制到另一個地方,有必要提一下:“dd代表磁盤破壞者”這句盛傳于Unix管理員當中的老話有一定道理。即使在dd命令中輸錯哪怕一個字符,都會立即永久地清除整個驅動器的寶貴數據。是的,確保輸入無誤很重要。
切記:在按下回車鍵調用dd之前,務必要考慮清楚!
dd的基本操作
我們已對你作了必要的警告,先從簡單的方面開始入手。假設你想為被指定為/dev/sda的整個磁盤的數據創建一個精確鏡像。你已插入了空的驅動器(理想情況下容量與/dev/sda系統一樣大)。語法很簡單:if =定義源驅動器,of =定義保存數據的文件或位置:
# dd if=/dev/sda of=/dev/sdb
下一個例子將創建/dev/sda驅動器的.img歸檔,將其保存到用戶帳戶的主目錄中:
# dd if=/dev/sda of=/home/username/sdadisk.img
那些命令創建了整個驅動器的鏡像。你還可以專注于驅動器中的單個分區。下一個例子執行該操作,還使用bs設置一次復制的字節數(本例中是4096個字節)。調整bs值可能會影響dd操作的整體速度,但理想的設置將取決于你的硬件配置文件及其他考量因素。
# dd if=/dev/sda2 of=/home/username/partition2.img bs=4096
恢復起來很簡單:實際上只要將if的值和of的值反過來。在本文中,if=對應你想要恢復的鏡像,of=對應你想要寫入鏡像的目標驅動器:
# dd if=sdadisk.img of=/dev/sdb
還可以在一個命令中同時執行創建操作和復制操作。比如說,該例子將使用SSH創建遠程驅動器的壓縮鏡像,并將生成的歸檔保存到本地計算機:
# ssh username@54.98.132.10 "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz
你應該始終測試歸檔,確認它們是否正常可用。如果它是你創建的啟動驅動器,將它插入到計算機,看看是否正常啟動。如果它是普通的數據分區,掛載它以確保文件存在且可以正常訪問。
用dd擦除磁盤
多年前,我有個朋友為其政府負責海外大使館的安保工作。他曾告訴我,他監管的每個大使館都配有政府發放的一把錘子。為什么?萬一大使館遇到什么危險,可以使用這把錘子砸爛所有硬盤。
那為什么不刪除數據呢?你不是在開玩笑吧?眾所周知,從存儲設備刪除含有敏感數據的文件實際上刪除不了數據。如果時間夠充裕、動機夠強烈,可以從幾乎任何數字介質找回幾乎任何數據,那些被砸得稀巴爛的數字介質除外。
然而,你可以使用dd讓不法分子極難搞到你的舊數據。這個命令將花一些時間在/dev/sda1分區的每個角落上創建數百萬個0:
# dd if=/dev/zero of=/dev/sda1
但它可以變得更好。使用/dev/urandom文件作為來源,你可以使用隨機字符寫入到磁盤:
# dd if=/dev/urandom of=/dev/sda1
監控dd操作
由于磁盤或分區歸檔可能要花很長時間,你可能需要為命令添加進度監控工具。安裝Pipe Viewer(Ubuntu上執行sudo apt install pv),并將其插入到dd。使用pv,最后一個命令看起來像這樣:
# dd if=/dev/urandom | pv | dd of=/dev/sda1 4,14MB 0:00:05 [ 98kB/s] [ <=> ]
以上就是如何正確的在Linux中使用dd命令,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。