9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry piのSDカードのバックアップとレストア

Last updated at Posted at 2018-09-10

環境はUbuntu 16.04、コマンドはすべてrootで実行しています。

1. デバイスの特定

ラズパイのOSが入ったSDカードを指して fdisk -l を実行
この例だと /dev/mmcblk0 がddコマンドの対象(ifパラメータ)になる

# fdisk -l
Disk /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 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: dos
Disk identifier: 0xa11e823f

デバイス   起動     Start 最後から セクタ  Size Id タイプ
/dev/sda1  *         2048  966846463 966844416  461G 83 Linux
/dev/sda2       966848510 1000214527  33366018 15.9G  5 拡張領域
/dev/sda5       966848512 1000214527  33366016 15.9G 82 Linux スワップ / Solaris

# ここがSDカード。容量とかであたりを付ける
# ddのifに渡すのは /dev/mmcblk0 になる。
Disk /dev/mmcblk0: 14.8 GiB, 15836643328 bytes, 30930944 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: dos
Disk identifier: 0xb7ba065b

デバイス       起動 Start 最後から セクタ  Size Id タイプ
/dev/mmcblk0p1       8192    93814    85623 41.8M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      94208 30930943 30836736 14.7G 83 Linux

2. ddコマンドでバックアップ作成

# dd if=/dev/mmcblk0 of=/tmp/RPI−tensorflow-keras.img bs=1M

3. 空のSDカードに差し替えてumountする

コマンドたたくのが面倒で、Nautilusからマウントを外しちゃいました。
画面左のボリューム一覧の部分にSDカードが新しく出てくるのでそこのEjectボタン的なのを押しました。

4. ddコマンドでレストア。

# dd if=/root/RPI−tensorflow-keras.img of=/dev/mmcblk0 bs=1M

進捗を確認

pkillコマンドというものがあってそれで確認できました。

※Macでこれをやるとddがkillされちゃうらしいので注意。

# pkill -USR1 dd
----------------------
# 別ターミナルでdd実行中の画面
# dd if=/root/RPI−tensorflow-keras.img of=/dev/mmcblk0 bs=1M 
9733+0 レコード入力
9733+0 レコード出力
10205790208 bytes (10 GB, 9.5 GiB) copied, 795.021 s, 12.8 MB/s
11936+0 レコード入力
11935+0 レコード出力
12514754560 bytes (13 GB, 12 GiB) copied, 993.262 s, 12.6 MB/s
12818+0 レコード入力
12817+0 レコード出力
13439598592 bytes (13 GB, 13 GiB) copied, 1072.74 s, 12.5 MB/s
12892+0 レコード入力
12892+0 レコード出力
13518241792 bytes (14 GB, 13 GiB) copied, 1079.82 s, 12.5 MB/s

と、ここまで来て

容量が足りないと怒られる。メーカーは違うけど16GB表記なんだけどなんで????
FDISKで容量を確認すると確かに違う。。。。同じの買えってことなのか?
これじゃバックアップ気軽にとれないんだけどな。

# SDカードA
Disk /dev/mmcblk0: 14.8 GiB, 15836643328 bytes, 30930944 sectors

# SDカードB
Disk /dev/mmcblk0: 14.4 GiB, 15487467520 bytes, 30248960 sectors

容量の小さいほうをベースにするとうまくいく

結局コピー元とコピー先をひっくり返したら上手くいきました。なんだかなぁって感じですが。

コピー元を作るときは最小限の容量のカードで、実際に使うものは一回り大きいサイズの物を使う
って感じの運用が良さげかもしれません。ddで8GB->16GBのコピーはやったことがないですが、
公式のイメージは4GBちょっとで、16GBにddで書き込んだらルートのパーティション拡張して
よしなにやってくれたので、初回起動時とか raspi-config とかが上手いことやってくれそうな気がします。

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?