使用 DD 僅將 Linux 分割區複製到外部 USB 磁碟機?

使用 DD 僅將 Linux 分割區複製到外部 USB 磁碟機?

我有一個 1 TB 內部驅動器,有兩個 1/2 TB 分割區,一個用於 Windows,另一個用於 Ubuntu 14.04 LTS。該站已主要成為 Linux 站,我再也沒有啟動到 Windows。

我想建立映像備份,因此使用 DD 將內部磁碟機複製到外部 1 TB USB 隨身碟。不幸的是,USB 驅動器似乎只比內部驅動器少了幾 GB,並且 DD 以“驅動器空間不足”錯誤訊息結束。現在我看到了一些奇怪的東西。當我彈出 USB 隨身碟並將其重新插入時,我看到兩個 1/2 GB 分割區似乎是重複的。它們具有相同的 GUID,並且 Nautilus 顯示相同的目錄結構和內容。我猜某個分割區的不完整副本導致外部磁碟機處於損壞狀態。

我怎樣才能使用DD只需複製 Linux 分割區到外部驅動器?這就是我真正想要的。

答案1

首先,您需要查找有關硬碟的數據,您可以透過在終端機中輸入以下內容來完成此操作:

sudo fdisk -l

您應該得到如下輸出:

Disk /dev/sda: 149,1 GiB, 160041885696 bytes, 312581808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x06bd4abe

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048 230055935 230053888 109,7G 83 Linux
/dev/sda2       292970494 312580095  19609602   9,4G  5 Extended
/dev/sda3       230055936 292968447  62912512    30G 83 Linux
/dev/sda5       292970496 312580095  19609600   9,4G 82 Linux swap / Solaris

Partition table entries are not in disk order.

假設 /dev/sda3 是您要複製的驅動器,那麼您可以執行以下操作:

dd bs=512 if=/dev/sda of=/dev/sdb1/partition.ddfile seek=230055936 count=$(expr 292968447 - 230055936)

請記住,這裡只是一些示例,您需要將其適合您的情況。

答案2

更簡單的方法:

  1. sudo fdisk -l正如 Videonath 所說。找到您要複製的分割區
  2. dd bs=512 if=/dev/<partition-name> of=/<external-media-path>

例如dd bs=512 if=/dev/sda2 of=/dev/sdb1

筆記:

  • dd 要求目標的大小大於或等於來源的大小
  • 以這種方式建立的備份(分割區層級)將無法啟動

答案3

當你詢問時dd,我可以推薦嗎partclone?它用於克隆和恢復分區。它需要了解底層檔案系統,優點dd是它只複製用過的阻塞並節省大量時間或空間,因為分區的未使用部分很少是可壓縮的(舊資料垃圾而不是零)。

sudo partclone.ext4 -c -b -s /dev/sdaX -o /dev/sdbY 

會做你想做的事。-c代表克隆,-b代表設備到設備,-s是來源,-o是目標。此外,由於您進行了克隆,因此來源和目標的 UUID 是相同的。使用 檢查此項blkid,使用uuidgen產生新的 UUID,然後sudo tune2fs /dev/sdbY -U <uuidgen-generated new UUID>變更它。

在同一台電腦上擁有兩個相同的 UUID 甚至可能是外部設備「損壞」狀態問題的根本原因。

在執行此操作之前,需要設定目標設備,fdisk以便新分割區不小於舊分割區。如果它更大,您可以稍後將克隆分割區增大到gparted新的最大大小。

相關內容