
我曾經有一個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
和我轉入(來自另一台計算機,所以設備在sda
和sdb
)它到(我選擇錯誤的)64GB SD 卡通過dd
(dcfldd
實際上):
# 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 卡。
在這種情況下,我假設我不能使用dd
或dcfldd
我可以做什麼?我可以使用dd
或dcfldd
嗎?當轉帳到達時會發生什麼32 GB 邊界目標 SD 卡上(資料完整性問題)?
進一步說明:
答案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
您可以使用任何工具來製作副本,例如cat
(dd
沒有任何優點cat
,只有缺點)。當到達目標磁碟末尾時它將停止。這種簡單方法的缺點是很難判斷您感興趣的部分的副本是否成功。
為了確保複製命令在成功複製要複製的內容時返回成功狀態,否則會出錯,請使用複製適量資料的命令。要複製檔案的前 N 個位元組,請使用head -c
.要複製的位元組數是扇區數乘以扇區大小(fdisk
列表中為 512 位元組)。不要忘記磁區從 0 開始(磁區 0 包含分割區表),因此要複製的磁區總數是最大的「結束」值加一。
head -c $((61315071*512+512)) /dev/sdSOURCE >/dev/sdDESTINTATION
sdSOURCE
將和替換sdDESTINATION
為適當的設備名稱。運行fdisk -l /dev/sdDESTINATION
and grep sdDESTINATION /proc/partitions
andfile -s /dev/sdDESTINATION
以及您認為有用的任何其他命令,以確保您要覆蓋的設備是您想要覆蓋的設備。