linux dd命令詳解

dd 是一個功能強大的 Unix/Linux 命令行工具,用于低級別的字節流操作,常用于創建、復制、轉換和處理文件或設備數據。它在 macOS 和 Linux 系統上都可用,但在 macOS 上有一些細微差異。本文將詳細講解 dd 命令的用法,包括參數、常見用例、注意事項以及 macOS 特定的細節。

1. dd 命令概述

dd(data duplicator)是一個低級工具,可以從輸入源(如文件、設備或標準輸入)讀取數據,并將其寫入輸出目標(如文件、設備或標準輸出)。它的靈活性使其適用于多種場景,如創建固定大小的文件、備份磁盤、轉換數據格式等。由于其直接操作字節流的特性,使用時需謹慎,以免覆蓋重要數據。

基本語法

dd [選項]

常見選項包括:

  • if=FILE:指定輸入文件或設備(如 /dev/zero/dev/urandom)。
  • of=FILE:指定輸出文件或設備。
  • bs=BYTES:設置塊大小(如 1k1M1G)。
  • count=N:指定要復制的塊數。
  • skip=N:跳過輸入文件開頭的 N 個塊。
  • seek=N:跳過輸出文件開頭的 N 個塊。
  • conv=CONVERSIONS:指定數據轉換選項(如 notruncsync)。
  • status=LEVEL:控制進度輸出(nonenoxferprogress)。

2. 核心參數詳解

以下是 dd 的主要參數及其作用:

if(輸入文件)

  • 指定數據來源,默認為標準輸入(/dev/stdin)。
  • 示例:
    • /dev/zero:生成全零字節流。
    • /dev/urandom:生成隨機字節流。
    • 普通文件:如 input.txt
    • 設備:如 /dev/sda(磁盤設備)。

of(輸出文件)

  • 指定數據寫入目標,默認為標準輸出(/dev/stdout)。
  • 示例:
    • 普通文件:如 output.bin
    • 設備:如 /dev/sdb(U 盤)。
    • /dev/null:丟棄數據(常用于測試)。

bs(塊大小)

  • 定義每次讀寫的塊大小,單位可以是字節(默認)或使用后綴:
    • k:1KB(1024 字節)
    • M:1MB(10242 字節)
    • G:1GB(10243 字節)
  • 示例:bs=1M 表示每次讀寫 1MB。
  • 注意:macOS 的 dd 支持小寫 m 和大寫 M,但 Linux 更嚴格,推薦使用大寫。

count(塊數)

  • 指定復制的塊數,總數據量 = bs × count
  • 示例:bs=1M count=100 表示復制 100MB 數據。

skipseek

  • skip=N:跳過輸入文件開頭的 N 個塊。
  • seek=N:跳過輸出文件開頭的 N 個塊。
  • 示例:skip=10 表示從輸入文件的第 11 個塊開始讀取。

conv(轉換選項)

  • 指定數據處理方式,多個選項用逗號分隔:
    • notrunc:不截斷輸出文件(追加而非覆蓋)。
    • sync:用填充字節(如零)補齊塊大小。
    • fsync:在寫入完成前同步數據到磁盤。
    • nocache:避免使用緩存(Linux 特有)。
  • 示例:conv=notrunc 確保追加數據到現有文件。

status(進度輸出)

  • 控制 dd 的輸出信息:
    • status=progress:顯示實時進度(macOS 和較新 Linux 支持)。
    • status=none:抑制所有輸出。
    • status=noxfer:僅抑制傳輸統計信息。
  • 示例:dd if=/dev/zero of=output.bin bs=1M count=100 status=progress

3. 常見用例

以下是一些常見的 dd 使用場景,包含示例命令和說明。

3.1 創建固定大小的文件

  • 創建 100MB 的全零文件

    dd if=/dev/zero of=output.bin bs=1m count=100
    
    • if=/dev/zero:從零字節流讀取。
    • of=output.bin:寫入 output.bin
    • bs=1m count=100:生成 100MB 數據。
    • macOS 兼容,輸出文件為 100MB。
  • 創建 100MB 的隨機數據文件

    dd if=/dev/urandom of=output.bin bs=1m count=100
    
    • 使用 /dev/urandom 生成隨機數據。

3.2 備份磁盤或分區

  • 備份磁盤到文件

    dd if=/dev/sda of=backup.img bs=4M
    
    • 從磁盤 /dev/sda 讀取,寫入 backup.img
    • bs=4M 提高效率。
  • 恢復備份到磁盤

    dd if=backup.img of=/dev/sdb bs=4M
    
    • 注意:目標磁盤會被覆蓋,需謹慎!

3.3 復制文件

  • 復制文件
    dd if=input.txt of=output.txt bs=64k
    
    • 復制 input.txtoutput.txt
    • bs=64k 優化性能。

3.4 測試磁盤性能

  • 測試寫入速度
    dd if=/dev/zero of=testfile bs=1M count=1000 status=progress
    
    • 寫入 1GB 數據到 testfile,顯示進度和速度。

3.5 創建啟動盤

  • 將 ISO 寫入 U 盤
    dd if=ubuntu.iso of=/dev/disk2 bs=4m status=progress
    
    • macOS 示例,disk2 為 U 盤設備(通過 diskutil list 確認)。
    • 注意:需 sudo,且目標設備會被格式化。

3.6 擦除磁盤

  • 用零填充磁盤
    dd if=/dev/zero of=/dev/disk2 bs=1m
    
    • 將整個磁盤填充為零,清除數據。

4. macOS 特定注意事項

由于你在 macOS 上使用 dd,以下是一些 macOS 特定的細節:

4.1 塊大小單位

  • macOS 的 dd 支持 k(1024 字節)、m(10242 字節)、g(10243 字節),大小寫均可。
  • 示例:bs=1mbs=1M 均有效。

4.2 設備路徑

  • macOS 的磁盤設備通常為 /dev/diskN(如 /dev/disk2)。
  • 使用 diskutil list 查看設備路徑。
  • 寫入設備時,可能需要卸載磁盤:
    diskutil unmountDisk /dev/disk2
    

4.3 權限問題

  • 寫入設備(如 U 盤)需要 sudo
    sudo dd if=input.iso of=/dev/disk2 bs=4m
    

4.4 進度顯示

  • macOS 的 dd 默認不顯示進度,但較新版本(macOS 10.11 及以上)支持 status=progress
  • 替代方法:發送 SIGINFO 信號查看進度:
    1. 運行 dd 命令。
    2. Ctrl+T 查看當前狀態。

4.5 性能優化

  • macOS 的 dd 默認使用緩存,可能會影響性能。
  • 使用 conv=fsync 確保數據寫入磁盤,但會稍慢:
    dd if=/dev/zero of=output.bin bs=1m count=100 conv=fsync
    

5. 注意事項

  • 數據覆蓋風險dd 直接操作字節流,錯誤的目標(如 of=/dev/sda)可能導致數據丟失。始終檢查 of 參數。
  • 塊大小選擇:較大的 bs(如 1M4M)通常提高性能,但過大可能導致內存問題。
  • 錯誤處理dd 默認輸出錯誤到 stderr,建議檢查返回值:
    dd if=/dev/zero of=output.bin bs=1m count=100 && echo "Success" || echo "Failed"
    
  • macOS vs Linux:macOS 的 dd 不支持某些 Linux 專有選項(如 conv=nocache),但核心功能一致。

6. 示例:結合上下文

根據你之前的任務(創建 100MB 文件并用于 sendfile),可以用以下命令生成測試文件:

dd if=/dev/zero of=example.txt bs=1m count=100 status=progress
  • 這將在 macOS 上創建 100MB 的 example.txt,可用于你的 TCP 服務器測試。
  • 如果需要隨機數據:
    dd if=/dev/urandom of=example.txt bs=1m count=100 status=progress
    

7. 高級用法

  • 管道操作

    dd if=/dev/urandom bs=1M count=100 | gzip > output.bin.gz
    
    • 生成 100MB 隨機數據并壓縮。
  • 部分文件復制

    dd if=input.bin of=output.bin bs=1M skip=10 count=20
    
    • 從第 10MB 開始復制 20MB 數據。
  • 轉換大小寫

    dd if=input.txt of=output.txt conv=ucase
    
    • 將輸入文件內容轉換為大寫。

8. 總結

dd 是一個功能強大但需謹慎使用的工具,適合低級別數據操作。在 macOS 上,核心功能與 Linux 一致,但需注意設備路徑、權限和進度顯示的差異。通過合理設置 bscount,可以高效完成文件創建、備份等任務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92922.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92922.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92922.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多線程同步技術是用于協調多個線程訪問共享資源或執行順序的機制,以避免數據競爭、死鎖、線程不安全等問題

多線程同步技術是用于協調多個線程訪問共享資源或執行順序的機制,以避免數據競爭、死鎖、線程不安全等問題。 在提供的代碼中,存在多線程操作加熱板的場景,涉及鎖競爭和硬件資源訪問,優化多線程同步可以顯著提升程序性能和穩定性。 以下是多線程同步技術的詳細解釋、常見…

CRMEB標準版,從創建數據表到實現最基礎增刪改查的實現過程

很多使用了CRMEB單商戶系統的童鞋在進行二開的時候,都會遇到新建了數據表之后不知道對數據表怎么進行操作。那么,這篇文章將帶你完整的實現一遍,以后就不會怕啦。一、創建數據表就以最簡單的為例,創建一個學生的信息表編號姓名性別…

J2EE模式---數據訪問對象模式

數據訪問對象模式基礎概念數據訪問對象模式(Data Access Object Pattern,簡稱 DAO 模式)是一種結構型設計模式,其核心思想是將數據訪問邏輯與業務邏輯分離,通過一個抽象層(DAO)來處理數據的持久…

【OpenCV篇】OpenCV——02day.圖像預處理(1)

目錄 前言 一、圖像色彩空間轉換 1 RGB顏色空間 2 顏色加法 3 顏色加權加法 4 HSV顏色空間 5 RGB轉Gray(灰度) 二、灰度實驗 1 灰度圖 2 最大值法 3 平均值法 4 加權均值法 5 兩個極端的灰度值 三、圖像二值化處理 二值圖像 1 閾值法(THRESH_BINARY) 2 反閾值…

經典IDE之Turbo C

寫的程序不多,換過的 IDE 不少,本文將列舉曾經用過的不同 C 語言相關的 IDE 環境,既是紀念,也是回憶。值得注意的是 IDE 的出現是為了提高開發效率,有一個相對成熟的編譯環境和程序。從編程的角度來看,過分…

Go 多模塊倉庫標簽管理教程

為了方便自己開發,自己寫了個小工具:DzhGO 代碼生成工具 功能特點標題 初始化項目基礎結構生成插件模塊代碼生成模型和實體代碼生成服務接口和實現代碼支持 admin 和 app 兩種模塊類型生成項目基礎目錄 具體介紹看倉庫: https://github.co…

IDEA 類上方注釋 簽名

File -->settings–>Editor–>File and Code Templates–>class新建 Class 類上方添加內容:/*** author Jagger* since ${DATE} ${TIME}*/

衛星通信終端天線對星之:參考星對星

我們在前面的文章中介紹了3種衛星通信終端的對星模式,分別是: 衛星通信終端天線的5種對星模式之一:信標跟蹤 衛星通信終端天線的5種對星模式之二:功率檢測型載波跟蹤 衛星通信終端天線的5種對星模式之二:DVB跟蹤 今…

來自麻省理工和AI制藥公司 Recursion 的結構與結合親和力預測模型Boltz-2,解決小分子藥物發現的關鍵問題

1. Boltz-2介紹 文章來源:http://jeremywohlwend.com/assets/boltz2.pdf 開源代碼來源:https://github.com/jwohlwend/boltz 該AI模型由麻省理工學院計算機科學與人工智能實驗室與上市AI制藥公司Recursion一起開發,雙方在Boltz-1的基礎之上…

從零用java實現 小紅書 springboot vue uniapp(14) 集成阿里云短信驗證碼

從零用java實現 小紅書 springboot vue uniapp(14) 集成阿里云短信驗證碼 移動端演示 http://8.146.211.120:8081/#/ 管理端演示 http://8.146.211.120:8088/#/ 項目整體介紹及演示 前言 在現代應用中,手機號不僅是用戶的唯一標識&#xff0…

`<< EOF` 與 `<< ‘EOF‘` 與 `<< “EOF“`有無引號的區別多回答筆記250722

<< EOF 與 << EOF 與 << "EOF"有無引號的區別多回答筆記250722 實測 自測代碼: # 定義變量 hello"ni hao"# 無引號 tee << EOF # 無引號 ${hello} world \n $(date) # 無引號 EOF# 單引號 tee << EOF # 單…

點擊按鈕滾動到底功能vue的v-on:scroll運用

使用vue自帶的監聽滾動功能v-on:scroll&#xff0c;滾動條變化時&#xff0c;會調用方法 checkScrollStatus&#xff0c;如果滾動條在容器底部時&#xff0c;則隱藏按鈕&#xff0c;否則顯示按鈕&#xff0c;點擊按鈕能一鍵滾動到底部。<div class"chat-area" ref…

Linux下編譯SLEPc

本文記錄在Linux下編譯安裝SLEPc的流程。 一、下載代碼 git clone https://github.com/slepc/slepc.git cd ./slepc二、安裝依賴 2.1 安裝PETSc 參見: <Linux下編譯安裝PETSc> 2.2 安裝intel oneAPI sudo apt install intel-oneapi-base-toolkit sudo apt install i…

【無標題】qwen3-8b 強化學習訓練后的模型,可以接著 進行其他grpo 強化學習訓練 嗎

ser_count’, 0),)} {((‘valid_user_count’, 1),)} 44 0.0 88 [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.0, 0.6, 0.0, 0.6, 0.0, 0.6] 55 100%|???{‘loss’: 0.0132, ‘grad_norm’: 0.07552657276391983, ‘learning_rate’: 2e-06, ‘num_tokens’: 2098…

IDC權威認可:瑞數信息雙項入選《中國大模型安全保護市場概覽》

近日&#xff0c;國際數據公司IDC正式發布了《中國大模型安全保護市場概覽&#xff0c;2025&#xff1a;全方位安全檢測與防護構建可信AI》報告。本次報告中IDC結合全球統一定義以及中國市場特色&#xff0c;將中國大模型安全保護市場劃分為7個細分領域&#xff0c;并通過對中國…

多智能體(Multi-agent)策略模式:思維鏈CoT和ReAct

參考&#xff1a;https://zhuanlan.zhihu.com/p/704523060 &#x1f3af; 一句話記住 CoT&#xff1a;像“考試時在草稿紙上寫完所有步驟&#xff0c;再抄答案”。ReAct&#xff1a;像“玩密室逃脫&#xff0c;每開一個箱子就去找下一個線索”。 用小學生能聽懂的話 兩個小故事…

ChatGPT指令大全:輸入需求=輸出完整方案

ChatGPT指令大全提供數百個精煉過的指令語句 (提示詞)&#xff0c;讓你充分發揮 ChatGPT 的強大功能 一、核心功能模塊分類 1. 求職與面試 簡歷優化 專業反饋&#xff1a;按面試官視角分析簡歷并提出改進建議量化數據&#xff1a;為經歷添加具體數字&#xff08;如提升效率30…

Java零基礎入門學習知識點2-JDK安裝配置+Maven

文章目錄版本提示參考視頻Maven環境準備一、安裝Java開發工具包&#xff08;JDK&#xff09;二、JDK環境配置三、下載Maven安裝包*四、Maven環境配置&#xff08;可省略&#xff09;*五、驗證安裝&#xff08;上一步沒做&#xff0c;這步無法驗證&#xff0c;可省&#xff09;六…

基于單片機智能衣柜/智能衣櫥設計

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 本設計實現了一種基于單片機的多功能智能衣柜&#xff0c;融合環境檢測、安全防護與用戶交互功能…

自動語音識別(ASR)技術詳解

語音識別&#xff08;Automatic Speech Recognition, ASR&#xff09;是人工智能和自然語言處理領域的重要技術&#xff0c;旨在將人類的語音信號轉換為對應的文本。近年來&#xff0c;深度學習的突破推動語音識別系統從實驗室走入日常生活&#xff0c;為智能助手、實時翻譯、醫…