這裡介紹在Windows、Linux與OSX中,如何備份與還原Raspberry Pi的記憶卡。
Windows
在 Windows 中若要備份或回復記憶卡的資料,可以使用Win32 Disk Imager這個開放原始碼的免費工具。
Win32 Disk Imager 是專門用來備份 USB 手指、記憶卡的小工具,安裝好之後,先將記憶卡插進電腦,並執行 Win32 Disk Imager,就會看到這樣的操作畫面。
首先選擇備份影像檔的儲存路徑與檔案名稱(Image File),然後選擇要備份的設備(Device),接著按下「Read」按鈕即可將記憶卡的資料全部備份至檔案中。
如果要從備份影像檔中將資料還原至記憶卡,則按下「Write」按鈕即可。
Linux
不管您是使用哪一種Linux,備份與還原記憶卡的步驟都是一樣的。首先將記憶卡插進電腦中,使用下列語法檢查一下磁碟的狀況:
lsblk
輸出會類似這樣:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 28.9G 0 disk ├─sda2 8:2 1 28.9G 0 part / └─sda1 8:1 1 60M 0 part /media/devi/boot mmcblk0 179:0 0 968.8M 0 disk └─mmcblk0p1 179:1 0 968.8M 0 part /boot
以這裡的例子來說,由於我是使用USB手指來存放系統檔案的,我的USB手指容量大小是32 GB,所以是sda。這裡的mmcblk0就是我的記憶卡,用作引導Raspberry Pi來讀取USB手指的系統檔案。
在Linux系統中可以使用dd指令來備份記憶卡:
sudo dd if=/dev/sda of=/home/devi/backup.img bs=1M
if參數所指定的/dev/sda就是我們剛剛查到的USB手指,而of參數所指定的/home/devi/backup.img則是要儲存備份影像檔的路徑與檔案名稱,請依照自己的狀況修改。
要從備份檔還原記憶卡的話,也是用dd指令:
sudo dd if=/home/devi/backup.img of=/dev/sda bs=1M
把if與of對調就會變成還原的動作,當然這個動作就會把原本記憶卡中的所有資料覆蓋掉,執行前請確認記憶卡中的資料不會再使用了。
另外我們也可以配合gzip將備份的影像檔壓縮,這樣可以節省備份硬碟的空間,再使用date自動產生日期放在檔名中,讓備份檔更好辨識:
sudo dd if=/dev/sda bs=1M | gzip > /home/devi/image-`date +%d%m%y`.gz
經過壓縮的備份影像檔如果要還原的話,就先用gzip解壓縮,再給dd寫入記憶卡即可:
sudo gzip -dc /home/devi/image.gz | dd of=/dev/sda bs=1M
Mac OS X
在OSX中備份記憶卡的步驟跟在Linux中類似,也是使用dd指令,只不過操作步驟有一些小差異。
首先將記憶卡插進電腦中之後,使用下列語法查看硬碟狀況:
diskutil list
輸出為:
/dev/disk0 (internal, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *1.0 TB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_HFS Macintosh HD 999.3 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk1 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: *13.1 MB disk1 /dev/disk2 (internal, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *15.9 GB disk2 1: Windows_FAT_16 RECOVERY 856.8 MB disk2s1 2: Linux 33.6 MB disk2s3 3: Windows_FAT_32 boot 62.9 MB disk2s5 4: Linux 15.0 GB disk2s6
我們可以從磁碟的大小與分割區的檔案系統來判斷Raspberry Pi的記憶卡是哪一張,以這個例子來說,/dev/disk2 就是一張有安裝Raspberry Pi系統的16 GB記憶卡。
確定了記憶卡的編號之後,就可以使用dd來備份記憶卡的資料了:
sudo dd if=/dev/disk2 of=~/Desktop/backup.img bs=1M
dd的if參數是指定資料來源,也就是記憶卡,而of則是指定備份影像檔的儲存路徑與檔案名稱,請依照自己的狀況修改。
要從備份檔還原記憶卡的話,就將if與of所指定的位置對調:
sudo dd if=~/Desktop/backup.img of=/dev/disk2 bs=1M
使用gzip將備份的影像檔壓縮:
sudo dd if=/dev/rdisk2 bs=1m | gzip > ~/Desktop/backup.gz
經過壓縮的備份影像檔如果要還原的話,就先用gzip解壓縮,再給dd寫入記憶卡即可:
gzip -dc ~/Desktop/backup.gz | sudo dd of=/dev/disk2 bs=1M
Be First to Comment