首頁 > 套件與系統管理 > dd

dd:檔案轉換與複製

dd 命令是一個強大的實用程式,用於轉換和複製檔案。它主要用於低階資料操作,例如建立磁碟映像、備份和還原分割區、創建可開機 USB 磁碟機以及清除檔案內容。請務必謹慎使用,以免造成資料遺失。

概述

dd 通常被稱為「disk dump」或「data duplicator」,它以區塊為單位讀寫資料。它從輸入檔案 (if) 讀取資料並將其複製到輸出檔案 (of),在此過程中可以應用各種轉換 (conv) 和區塊大小 (bs) 選項。

主要功能

  • 磁碟/分割區映像的建立與還原
  • 建立可開機媒體
  • 調整檔案大小與初始化內容
  • 資料轉換 (例如:大小寫轉換)

主要選項

dd 命令透過各種選項實現精確的資料操作。指定輸入 (if) 和輸出 (of) 檔案至關重要,並透過區塊大小 (bs) 和要複製的區塊數 (count) 來控制操作範圍。

輸入/輸出指定

區塊大小與數量

轉換與狀態

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`dd` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用範例

dd 命令功能強大,但錯誤使用可能導致嚴重的資料遺失。以下範例展示了常見用法,但在實際系統磁碟上操作時,務必先進行備份並謹慎操作。

建立 100MB 的虛擬檔案

dd if=/dev/zero of=dummy.img bs=1M count=100

從 /dev/zero 讀取 100 個 1MB 的區塊,建立名為 'dummy.img' 的檔案。

備份磁碟分割區 (需謹慎)

dd if=/dev/sda1 of=sda1_backup.img bs=4M status=progress

將 /dev/sda1 分割區的全部內容備份到 'sda1_backup.img' 檔案。使用 'status=progress' 顯示進度。**請非常仔細地檢查目標裝置路徑。**

用 0 填充檔案內容 (安全刪除)

dd if=/dev/zero of=myfile.txt bs=1M count=1 conv=notrunc

用 0 覆寫現有的 'myfile.txt' 檔案內容。'conv=notrunc' 會保持檔案大小。

從 ISO 映像建立可開機 USB 磁碟機 (非常謹慎)

dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress conv=fsync

將 'ubuntu.iso' 檔案複製到 '/dev/sdb' USB 磁碟機,使其可開機。**請務必確認 'of' 指定的裝置路徑。錯誤指定可能損壞系統磁碟。** 'conv=fsync' 會確保所有資料完全寫入磁碟。

複製檔案的特定部分

dd if=input.txt of=output.txt bs=1 count=100 skip=50 seek=0

從 'input.txt' 檔案讀取從第 51 個位元組開始的 100 個位元組,並將其複製到 'output.txt' 檔案的開頭。 (由於 bs=1,skip/seek 是以位元組為單位)

提示與注意事項

dd 命令非常強大,使用時需要格外小心。特別是如果為 `if` 和 `of` 選項指定了錯誤的裝置或檔案,可能會損壞系統資料。

重要注意事項

  • **確認目標**:請多次檢查 `if` 和 `of` 中指定的路徑。特別是像 `/dev/sda` 這樣的裝置檔案可能具有毀滅性後果。
  • **進度顯示**:使用 `status=progress` 選項以即時查看操作進度。這對於處理大量資料非常有用。
  • **區塊大小**:`bs` 選項對效能有重大影響。通常,1M、4M 或 8M 是比較有效率的。
  • **資料遺失風險**:`dd` 會在沒有警告的情況下覆寫資料,因此在使用包含重要資料的磁碟或分割區時,務必先進行備份。

與 pv 命令一起使用

`dd` 命令本身提供的進度顯示有限。與 `pv` (Pipe Viewer) 命令一起使用,可以查看更詳細的進度、傳輸速率和預計完成時間。如果尚未安裝 `pv`,請先安裝它。 (例如:`sudo apt install pv` 或 `sudo yum install pv`) **使用範例:** `dd if=/dev/sda | pv -pteb | dd of=/dev/sdb`


相同類別命令