使用 DD 僅複製可移動裝置的一半(部分)

使用 DD 僅複製可移動裝置的一半(部分)

我曾經有一個32GB SD 卡具有這種結構(或非常接近):

luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 29.2 GiB, 31393316864 bytes, 61315072 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: 0xec4e4f57

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1             1   125000   125000   61M  c W95 FAT32 (LBA)
/dev/mmcblk0p2        125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3      33292288 61315071 28022784 13.4G 83 Linux

和我轉入(來自另一台計算機,所以設備在sdasdb)它到(我選擇錯誤的)64GB SD 卡通過dddcfldd實際上):

# dcfldd if=/dev/sda of=/dev/sdb bs=1M

現在,我的新 64GB SD 卡是:

luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 59.5 GiB, 63864569856 bytes, 124735488 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: 0xec4e4f57

Device         Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1             1   125000   125000   61M  c W95 FAT32 (LBA)
/dev/mmcblk0p2        125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3      33292288 61315071 28022784 13.4G 83 Linux

好吧,現在沒問題,但現在我不再有源 32 GB SD 卡,只剩下 64 GB SD 卡,我想再次將其轉移到一些空的 32 GB SD 卡。
在這種情況下,我假設我不能使用dddcfldd

我可以做什麼?我可以使用dddcfldd嗎?當轉帳到達時會發生什麼32 GB 邊界目標 SD 卡上(資料完整性問題)?

進一步說明:

  • 任何其他方法克隆 SD 卡就可以了,但我有一個問題:這種情況是一些 SD 卡啟動驅動器樹莓派2,並且透過partimage或進行克隆gparted不起作用(Raspberry 無法啟動)。看起來只有dd克隆沒有缺陷。

  • 相似的問題,但我認為不一樣。

  • dcfldd工具具有與 相同的語法和行為dd。它只是提供更多資訊(進度...等)。這裡是手冊頁

答案1

假設 sda 是您的 64GB 來源 SD 卡,sdb 是您的 32GB 目標 SD 卡。您可以使用以下命令將 dd 限制為僅複製所需扇區的數量:

dd if=/dev/sda of=/dev/sdb bs=512 count=61315072

答案2

我已經對硬碟做過很多次了:只需將dd大硬碟放到小硬碟上即可。當達到 32 GB 時就會失敗,但沒關係。

如果您仍然有疑問,我建議您嘗試在手邊的舊 USB 記憶棒/硬碟上執行此操作。

答案3

您可以使用任何工具來製作副本,例如catdd沒有任何優點cat,只有缺點)。當到達目標磁碟末尾時它將停止。這種簡單方法的缺點是很難判斷您感興趣的部分的副本是否成功。

為了確保複製命令在成功複製要複製的內容時返回成功狀態,否則會出錯,請使用複製適量資料的命令。要複製檔案的前 N ​​個位元組,請使用head -c.要複製的位元組數是扇區數乘以扇區大小(fdisk列表中為 512 位元組)。不要忘記磁區從 0 開始(磁區 0 包含分割區表),因此要複製的磁區總數是最大的「結束」值加一。

head -c $((61315071*512+512)) /dev/sdSOURCE >/dev/sdDESTINTATION

sdSOURCE將和替換sdDESTINATION為適當的設備名稱。運行fdisk -l /dev/sdDESTINATIONand grep sdDESTINATION /proc/partitionsandfile -s /dev/sdDESTINATION以及您認為有用的任何其他命令,以確保您要覆蓋的設備是您想要覆蓋的設備。

相關內容