Dd
如何將整個磁碟複製到更大的磁碟然後解除安裝?
我所做的是複製一個具有三個分區的小型 32GB 快閃記憶體模組。我碰巧有一個 32GB 的 USB,所以我認為它可能會起作用;它沒有。東芝的 32GB 似乎與 Sandisk 的 32GB 有點不同。
無論如何,然後拿了一個 2TB 的外部驅動器並做了完全相同的事情。具體來說,我做了以下事情:
dd if=/dev/sdX of=/dev/sdY bs=100M
最後一個塊是作為部分副本出現還是如果首先到達EOF,它會被丟棄**?**
以便從本質上複製整個快閃記憶體模組 - 分區表和所有。32GB -> 2TB 很容易,因為
dd
實用程序在讀取最後(第三個)分區的末尾後正確停止。所以,我現在要做的只是創建一個包含整個快閃記憶體映像的簡單二進制 blob。我的 2TB 驅動器現在相對於原始驅動器進行了相同的分區:
sdx1, sdx2, sdx3
. 所以,我再次接受dd
了以下內容:
dd if=/dev/sdx of=firmware.bin bs=100M
這樣做不僅會複製我感興趣的第一個 32GB,而且還會繼續複製整個 2TB 驅動器,或者當我嘗試它時也是如此。我可以通過以下方法找到感興趣的分區的確切字節長度:
$ lsblk -b NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdc 8:32 0 2000398933504 0 disk ├─sdc1 8:33 0 134217728 0 part ├─sdc2 8:34 0 2147483648 0 part └─sdc3 8:35 0 29734297600 0 part
解決此問題的明確方法是將塊大小設置
dd
為一個字節,然後將要讀取的塊數設置為上述三個大小的總和:
dd if=/dev/sdc of=firmware.bin bs=1 count=32015998976
但我無法想像這實際上需要多長時間。
編輯:對上述好奇心的快速測試顯示穩定的~150KB/s 傳輸速率。
tl; dr我如何才能獨占複製遠大於分區總和的磁碟的前三個分區?
如果您也需要,只需複制您需要的分區和 MBR。
MBR 儲存在磁碟的前 512 個字節中。
dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1
複製每個分區
dd if=/dev/sdX1 of=/path/to/partition1.img bs=512 dd if=/dev/sdX2 of=/path/to/partition2.img bs=512 dd if=/dev/sdX3 of=/path/to/partition3.img bs=512