[Linux] dd 指令不浪費空間備份 usb 開機碟

為了備份黑蘋果的安裝碟,我稍微研究了一些 dd 的用法。一般的dd 備份整個隨身碟,出來的檔案大小都跟隨身碟的容量差不多大:像是如果隨身碟 32 GB,檔案 3 GB,備份出來的東西也會是 32GB…,為了有效利用筆電渺小的 SSD,找到了不錯的解法,而且可以順利開機呢。

GParted

使用 GParted 的目的就是「調整磁區」。一般製作完各種安裝碟後,通常都會剩下很多的容量可以使用,但是開機碟並不需要這些空間,所以可以使用 GParted 把多切的部份移動,拉到最小,大檔案可能會花很多時間,不過應該都還好。

往左拉到底

往左拉到底

 

使用 dd 備份開機隨身碟

移動完分區後,可以使用 fdisk 來看最後一個分區的 block 的位置:

sudo fdisk -l

 

得到的結果如下(請用電腦看吧,手機可能會亂掉)

#!/usr/bin/bash
Disk /dev/sdb: 7.4 GiB, 7897874432 bytes, 15425536 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: gpt
Disk identifier: F88F7463-BCCF-4E15-A0DF-B6DDB10CF92E

所用裝置     Start    結束     磁區   Size    類型
/dev/sdb1      40  409639  409600  200M EFI System
/dev/sdb2  409640 9848831 9439192  4.5G Apple HFS/HFS+

 

我的黑蘋果安裝碟總共有兩個分區(sdb1、sdb2),所以就把最後一個的結束位置記下來(我的是 9848831 ),使用 count 指定大小; 一個磁區(sector)的大小為 512 bytes,所以就要指定 block size 為 512,dd一個磁區一個磁區慢慢讀取,bs*count 就是總容量

dd 用法如下:

dd if=來源 of=目的地 bs=BlockSize count=數字 # <strong>bs*count 就是總容量</strong>

 

請注意 if 跟 of 的對象,弄錯可是會毀損檔案的。

sudo dd if=/dev/sdb of=~/macOSusb.dd bs=512 count=數字

 

想看進度的話,可以打開另外一個終端機執行:

sudo watch -n 5 pkill -USR1 ^dd$

dd 那個畫面就會顯示進度了。

完成後可以看一下你的檔案大小是不是跟 fdisk -l 所顯示的 Size 差不多,這樣就完成了。然而,dd 最方便的地方就在於,製作出來的檔案可以直接用 win32diskimager 還原到其他 USB 上面使用,真的無敵啦~!! 終於可以安心的把隨身碟格式化了XD

ref : Copying a bootable USB drive


comments powered by Disqus