ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Raspberry Pi】Raspberry PiのSDカードバックアップ方法

 あけましておめでとうございます。
 去年の年末は体調が悪かったりちょっと忙しかったりでブログの更新がほとんどできていませんでした(言い訳)。

 今回はよくあるRaspbery PiのSDカードのバックアップの方法です。よくあるのになぜ記事にするかというと、毎回調べるのが面倒なのとコマンドにとあるオプションをつけないとものすごく時間がかかるということがわかったからです(二度とそんな思いはしたくない……)。

 以前書いた記事と被っている部分もあります。

 環境はMacOSなので、他の環境の場合は方法が違ってくるので注意してください。

 ではその方法を解説していきます。


1:SDカードのバックアップを取る
 まずSDカードを接続していない状態で以下のコマンドを実行します。

$ df

 すると「/dev/disk」から始まる一覧が表示されます。

 その後、SDカードリーダーなどにコピーしたいSDカードを差し込んだ状態でターミナルを立ち上げてもう一度以下のコマンドを実行します。

$ df

 この前後のコマンドの結果を比較して増えているものが対象のSDカードとなるのでメモしておきます。
※以後は「/dev/disk2」が該当のSDカードという前提で進めます。

 対象のSDカードがわかったら以下のコマンドを実行してSDカードをアンマウントします(「/dev/disk2」の部分は先ほど確認したものに任意に変更してください)。

$ diskutil umountDisk /dev/disk2

 SDカードをアンマウントしたら以下のコマンドを実行してSDカードからイメージファイルを作成します。

$ sudo dd if=/dev/rdisk2 of=raspberry_pi_backup.img bs=1m

「if=/dev/rdisk2」の部分は任意に変更してください(diskの前のrは必ずつけてください)。
「of=raspberry_pi_backup.img」が保存するイメージファイルのパスとファイル名の指定部分です。
「bs=1m」のオプションは必ず記述してください。これがあるのとないのとでは吸い出す時間が数倍違ってきます。

 コマンド実行中に「Ctrl+Tキー」を押すことで進捗状況を確認することができます。

 またSDカードを丸ごとコピーするため、イメージファイルを作成するPC側にSDカードと同じ容量以上を確保しておく必要もあります。


2:バックアップしたイメージファイルの書き込み
 新品のSDカードを使わない場合は、「SD Card Formatter」を使ってフォーマットします。

 SDカードを差し込んでSD Card Formatterを起動させると以下のような画面になるので、フォーマットボタンを押してフォーマットします。
f:id:rikoubou:20190107162440p:plain

 フォーマットが済んだら以下のコマンドを実行してSDカードに書き込みます。

$ diskutil unmountDisk /dev/disk2
$ sudo dd if=raspberry_pi_backup.img of=/dev/rdisk2 bs=1m conv=sync

 1つ目でSDカードをアンマウントし、2つ目でSDカードに書き込んでいます。
「if=raspberry_pi_backup.img」は書き込むイメージファイルパスです。
「of=/dev/rdisk2」の部分は任意に変更してください(diskの前のrは必ずつけてください)。
「bs=1m」のオプションをつけることで処理が早くなります。
「conv=sync」のオプションをつけることでOSを書き込む際に出る場合があるエラーを抑制することができるそうです。


 以上がRaspberry PiのSDカードのバックアップと書き込み方法です。
 オプションがあるのとないのとで全く違ってくるので本当に注意してください…。


・参考資料