Dd

用dd複製硬碟

  • March 30, 2018

我正在將較大的 HDD(750GB)複製到較小的 SSD(250GB)。我縮小了分區,只有 83gb 的已用空間。(我進行了碎片整理並進行了 chkdsk)。此外,分區大小的總和小於 SSD 大小。

我現在通過 pv 管道 dd 程序以查看傳輸的數據量。它仍在執行,並且已經在 170gb+ 上。為什麼是這樣?我在 dd 上使用了“conv=sync,noerror”參數。我以為它會以83gb結束..

這是“fdisk -l”輸出:(/dev/sda = 750gb HDD,/dev/sdb = 250gb SSD)

Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  1465149167   732574583+  ee  GPT
Partition 1 does not start on physical sector boundary.

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 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
Disk identifier: 0x00000000

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  1465149167   732574583+  ee  GPT

這是我用來複製的命令:

sudo dd if=/dev/sda | pv | sudo dd of=/dev/sdb bs=64K conv=sync,noerror

我正在將較大的 HDD(750GB)複製到較小的 SSD(250GB)。我縮小了分區,只有 83gb 的已用空間……

它還在繼續,它已經在 170gb+……我以為它會以 83gb 完成。

那是因為您不只是複制 83GB 的數據。讓我們看看你是如何複製數據的:

sudo dd if=/dev/sda | pv | sudo dd of=/dev/sdb bs=64K conv=sync,noerror

第一部分是讀取整個/dev/sda 並將其轉儲到 STDOUT。

pv從第一個開始測量轉儲的吞吐量和狀態,dd並將其重定向到下一個命令,同時向您的終端提供人類可讀的輸出。無論如何,它不會處理數據,它只是為了提供資訊而測量事物。

第三部分是從 STDIN 獲取所有輸入並將其轉儲到 /dev/sdb。

所以會發生什麼,它將數據從源設備(/dev/sda)複製到目標設備(/dev/sdb),直到目標空間用完。

我縮小了分區,只有 83gb 的已用空間。(我進行了碎片整理並進行了 chkdsk)。此外,分區大小的總和小於 SSD 大小。

因為您調整了分區的大小,所以分區映射可能適合目標設備,但這並不一定保證所有數據都將位於磁碟的開頭。您需要查看 GPT 佈局以確認分區已移動到驅動器的開頭。如果不是,則副本可能不會包含您的所有數據。

您似乎正在嘗試複製 Windows 系統的啟動盤。與其嘗試手動執行此操作,不如使用 Clonezilla 之類的實用程序為您執行此操作。您仍然需要縮小源磁碟上的文件系統,但它會為您在目標磁碟上創建分區並複制數據。

引用自:https://serverfault.com/questions/905261