在 Mac 電腦上備份樹莓派 (Raspberry Pi) Micro SD 卡
在 Mac 電腦上備份樹莓派 (Raspberry Pi) Micro SD 卡...
是場災難....手續繁雜還不說,參數還一堆.
一點都不人性化.
---
備份原因:SD卡插在樹莓派都沒啥用到, 512GB 太浪費, 換成小一點的128GB.
步驟1: 找 SD 卡的路徑
$ diskutil list
可看到在/dev/disk19
sudo diskutil unmount /dev/disk19
----
然後是很複雜的參數:
What is the 'bs' option in dd?
answer: ‘bs=BYTES’, read and write up to BYTES bytes at a time.
Set both input and output block sizes to BYTES. This makes ‘dd’
read and write BYTES per block, overriding any ‘ibs’ and ‘obs’
settings. In addition, if no data-transforming ‘conv’ option is
specified, input is copied to the output as soon as it’s read, even
if it is smaller than the block size.
如果沒加bs選項 ,dd指令會跑很久.
1MB到32MB:大部分bs=1m
到`bs=32m
是合理的選擇。
---
看進度要安裝 pv
brew install pv
使用
使用 pv 的方法就是把它夾在 input 與 output 中間執行,例如:$ sudo dd if=/dev/disk19 | pv | sudo dd of=./BACKUP.dmg
添加參數 -s [ 記憶卡容量 ] ,就會以進度條的方式呈現,並預估還要多久,例如:$ sudo dd if=/dev/disk19 | pv -s 512G | sudo dd of=./BACKUP.dmg
使用dd這個備份工具的話, 預設是沒有明顯的備份過程顯示, 所以常常不知道現在的進度到那裡了, 所以筆者建議可以在dd指令中多加一個參數, 將dd的狀態(status)用pv這隻小程式顯示出來。
os: 真是爛死了~mac 要備份sd這麼麻煩....
----
Or, with gzip
, to save a substantial amount of space:
sudo dd if=/dev/rdisk1 bs=1m | gzip > /path/to/backup.gz
And, to copy the image back onto the SD:
gzip -dc /path/to/backup.gz | sudo dd of=/dev/rdisk1 bs=1m
sudo dd if=/dev/disk6 bs=4M | pv | gzip > ./PiSDBak.img.gz
1.25GiB 0:01:37 [12.4MiB/s] [ <=> ]
慢慢等.
---
縮減備份sd 映像檔的大小
實際上, 備份出來的映像檔雖然經過gzip壓縮後, 看起來會比較小, 但是在燒錄到新的SD Card時, 還是會解壓縮成原始的大小, 也就是原本的SD Card大小如果是16GB(即便是Raspberry Pi的系統實際上只用了6GB左右), 所以在這一小節, 我們要來探討一下怎麼縮減掉映像檔中不必要的部份。
---
還原:經過壓縮的備份影像檔如果要回復的話,就先用 gzip 解壓縮,再給 dd 寫入 MicroSD 卡即可:
sudo gzip -dc /home/gtwang/image.gz | dd bs=1M of=/dev/sdb
需要在 Mac 上備份複製並安裝一張 Raspberry Pi 作業系統的 512GB SD 卡到一張 128GB SD 卡,步驟如下:
前提:
- 你要確保512GB SD卡上的可用空間不超過128GB,否則目標SD卡無法容納資料。
- 備份資料前請確保所有重要資料已儲存,因為此操作可能會刪除目標 SD 卡。
步驟1:使用Disk Utility
確保SD卡掛載正確
- 將512GB SD卡插入Mac。
- 開啟磁碟工具(磁碟工具),檢查SD是否卡片正確掛載。
- 確保您能看到 SD 卡及其分區名稱
/dev/disk2
。
步驟2:建立SD卡的圖片文件
打開終端機。
使用以下指令將512GB SD卡建立為鏡像檔(假設SD卡的裝置名為
/dev/disk2
,請依實際情況取代):這將創建一個名為
raspberry_backup.img
的圖像文件,並保存在桌面上。
步驟3:壓縮圖片檔案(可選,但建議)
由於 512GB 的圖片檔案會佔用大量空間,您可以透過以下命令將其壓縮:
步驟4:插入128GB SD並卡格式化
- 將128GB SD卡插入Mac。
- Disk Utility,選擇SD卡,然後點選Erase開啟(抹掉)。
- 選擇MS-DOS (FAT)或ExFAT格式化檔案系統(依需求),並點選Erase。
步驟5:恢復備份到128GB SD卡
現在使用
dd
指令將壓縮後的照片恢復到 128GB SD 卡上:(假設128GB SD卡的裝置名為
/dev/disk3
,請依實際裝置名稱替換)。完成後,可以彈出SD卡將其用於Raspberry Pi。
注意事項:
- 克隆時請確保目標SD卡足夠大以承載備份。
dd
操作可能會花費一些時間,耐心等待。- 如果圖片檔案壓縮後仍超過目標SD卡的容量,可能需要清理來源SD卡上不必要的檔案或縮小分割區。
這就是 Mac 上備份並複製 Raspberry Pi 系統的 SD 卡的詳細步驟。
---markchiu@MacPro ~ % df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk3s1s1 460Gi 9.9Gi 87Gi 11% 407k 915M 0% /
devfs 239Ki 239Ki 0Bi 100% 826 0 100% /dev
/dev/disk3s6 460Gi 24Ki 87Gi 1% 0 915M 0% /System/Volumes/VM
/dev/disk3s2 460Gi 6.1Gi 87Gi 7% 1.2k 915M 0% /System/Volumes/Preboot
/dev/disk3s4 460Gi 2.8Mi 87Gi 1% 56 915M 0% /System/Volumes/Update
/dev/disk1s2 500Mi 6.0Mi 480Mi 2% 1 4.9M 0% /System/Volumes/xarts
/dev/disk1s1 500Mi 5.4Mi 480Mi 2% 32 4.9M 0% /System/Volumes/iSCPreboot
/dev/disk1s3 500Mi 4.3Mi 480Mi 1% 72 4.9M 0% /System/Volumes/Hardware
/dev/disk3s5 460Gi 356Gi 87Gi 81% 2.9M 915M 0% /System/Volumes/Data
map auto_home 0Bi 0Bi 0Bi 100% 0 0 - /System/Volumes/Data/home
/dev/disk5s1 16Gi 15Gi 471Mi 98% 498k 4.8M 9% /Library/Developer/CoreSimulator/Volumes/iOS_21A342
/dev/disk8s1 16Gi 16Gi 469Mi 98% 524k 4.8M 10% /Library/Developer/CoreSimulator/Volumes/iOS_21F79
/dev/disk10s1 8.0Gi 7.8Gi 239Mi 98% 13 2.4M 0% /Library/Developer/CoreSimulator/Cryptex/Images/bundle/SimRuntimeBundle-045528DA-3556-486F-92A5-9CC81ED0D87A
/dev/disk12s1 18Gi 17Gi 461Mi 98% 444k 4.7M 9% /Library/Developer/CoreSimulator/Volumes/iOS_22A3351
/dev/disk14s1 8.3Gi 7.5Gi 785Mi 91% 498k 8.0M 6% /Library/Developer/CoreSimulator/Volumes/iOS_21A328
/dev/disk16s1 16Gi 16Gi 467Mi 98% 507k 4.8M 10% /Library/Developer/CoreSimulator/Volumes/iOS_21C62
/dev/disk18s1 16Gi 16Gi 460Mi 98% 521k 4.7M 10% /Library/Developer/CoreSimulator/Volumes/iOS_21E213
/dev/disk19s2 1.8Ti 4.5Gi 1.8Ti 1% 1 0 100% /Volumes/SSD-2T_PNY
/dev/disk6s1 255Mi 52Mi 203Mi 21% 0 0 - /Volumes/bootfs
/dev/disk6s1 就是我的sd路徑. 但是 disk6s2 沒顯示出來...
512711720960 bytes transferred in 11394.065723 secs (44998136 bytes/sec)
477GiB 3:09:54 [42.9MiB/s] [ <=> ]
等很久....最後, 512gb sd卡 被壓縮成5.7GB.. gz
另外, raspberry PI 的檔案系統是ext4, Mac 暫時不支援讀取或讀取 Linux 檔案系統(如 **ext4**),這就是為什麼你無法在 **Finder** 中看到 **`disk6s2`** 分割區內容的原因。
gunzip -c ./PiSDBak.img.gz | pv | sudo dd of=/dev/rdisk6 bs=32m
m@MacPro% gunzip -c /Users/markchiu/pi_sd/PiSDBak.img.gz | pv | sudo dd of=/dev/rdisk6 bs=32m
64.0KiB 0:00:01 [62.1KiB/s] [ <=> 64.0KiB 0:00:04 [0.00 B/s] [ <=> ]
dd: /dev/rdisk6: short write on character device<=> ]
dd: /dev/rdisk6: Input/output error
0+1908736 records in
3727+1 records out
125069950976 bytes transferred in 3844.507405 secs (32532113 bytes/sec)
116GiB 1:04:09 [31.0MiB/s] [ <=> ]
markchiu@MacPro pi_sd %
修復:
sudo diskutil repairVolume /dev/disk6s1
Started file system repair on disk6s1 (bootfs)
Checking file system and repairing if necessary and if possible
Volume was successfully unmounted
Performing fsck_msdos -y /dev/rdisk6s1
** /dev/rdisk6s1
** Phase 1 - Preparing FAT
** Phase 2 - Checking Directories
** Phase 3 - Checking for Orphan Clusters
Warning: 448 files, 207950 KiB free (103975 clusters)
File system check exit code is 0
Restoring the original state found as mounted
Finished file system repair on disk6s1 (bootfs)
留言
張貼留言