Skip to content

Raspberry Pi的備份與還原

這裡介紹在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
Published inRaspberry Pi

Be First to Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *