Raspberry pi 3のバックアップ再び(rpi-clone)
以前バックアップについては一度書きましたが、以前のエントリでは、microSDカードを抜いてPCでバックアップを取る方法でした。今回はRaspberry piを起動したままで取得することを試みます。
準備
今回のバックアップはmicroSDカードに取得します。以前書いた方法はPCにファイルの形でとることができるので、場合によってはこちらのほうが便利かもしれません。SDカードを交換して簡単に環境を入れ替えたい場合は今回の方法がよさそうです。まずは安いSDカードとUSB-microSDカードリーダを入手しました。どっちも安いです。
I-O DATA microSDHCカード 32GB Class10対応 防水モデル SDカード変換アダプター付 EX-MSDC10/32G
- 出版社/メーカー: アイ・オー・データ
- 発売日: 2016/07/28
- メディア: Personal Computers
- この商品を含むブログを見る
iBUFFALO カードリーダー/ライター microSD対応 超コンパクト ブラック 【PlayStation4,PS4 動作確認済】BSCRMSDCBK
- 出版社/メーカー: バッファロー
- 発売日: 2008/12/01
- メディア: Personal Computers
- 購入: 12人 クリック: 162回
- この商品を含むブログ (25件) を見る
rpi-cloneのインストール
インストールというほどのことはないですが…… GitHubにソースがあるのでcloneしました。
シェルスクリプトで、作者の方によれば/usr/local/binにコピーする説明となっています。
pi@raspberrypi:~ $ git clone https://github.com/billw2/rpi-clone.git Cloning into 'rpi-clone'... remote: Counting objects: 58, done. remote: Total 58 (delta 0), reused 0 (delta 0), pack-reused 58 Unpacking objects: 100% (58/58), done. Checking connectivity... done. pi@raspberrypi:~ $ cd rpi-clone/ pi@raspberrypi:~/rpi-clone $ ls README.md rpi-clone pi@raspberrypi:~/rpi-clone $ sudo cp rpi-clone /usr/local/sbin pi@raspberrypi:~/rpi-clone $ type rpi-clone rpi-clone は /usr/local/sbin/rpi-clone です pi@raspberrypi:~/rpi-clone $
USBメモリとして認識させる
実はここでしばらくうまくいかなくて悩みました。ネットを探しても、みんなすんなり認識しているのですが、なぜか私のmicroSDカードは認識しない…… 結局カードリーダにしっかりカードがささっていなくて認識していなかったようです。このカードリーダ、ちゃんと差し込まれていなくても青いLEDが点灯するので怪しいと思いませんでした。最終的には/dev/sdbとして認識しました。
pi@raspberrypi:/dev $ sudo lsusb Bus 001 Device 009: ID 0bda:0109 Realtek Semiconductor Corp.★ Bus 001 Device 004: ID 174c:1153 ASMedia Technology Inc. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub pi@raspberrypi:/dev $ sudo fdisk -l Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes ... Disk /dev/sdb: 28.8 GiB, 30945574912 bytes, 60440576 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: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/sdb1 8192 60440575 60432384 28.8G c W95 FAT32 (LBA) pi@raspberrypi:/dev $
rpi-cloneでコピー
コマンドにバックアップ先のmicroSDカードのデバイス名(sdb)を指定します。SDカードは最初FATでフォーマットされているので、そのままではバックアップできません。パーティションから作り直しになるので、--force-initializeオプションを指定しました。あとはひたすら、ひたすら待ちます。忍耐です。なお、バックアップ中はrootファイルシステムの変更があるのは良くないと思われます。コピーしたカードから正常に起動できない可能性がでてくるからです。信頼性の高さが求められるような状況では使わないほうがいいかもね。
pi@raspberrypi:~/rpi-clone $ sudo rpi-clone sdb --force-initialize Forcing a partition initialization of destination disk sdb The existing destination disk 'sdb' partitions are: Disk /dev/sdb: 30946MB Partition Table: msdos Number Start End Size Type File system Flags 1 4.19MB 30946MB 30941MB primary fat32 lba *** All data on destination disk sdb will be overwritten! *** Do you want to initialize the destination disk /dev/sdb? (yes/no): yes Imaging the partition structure, copying 1181 megabytes... 1181+0 レコード入力 1181+0 レコード出力 1238368256 バイト (1.2 GB) コピーされました、 140.037 秒、 8.8 MB/秒 Running fsck on /dev/sdb1... Sizing partition 2 (root partition) to use all SD card space... mke2fs 1.42.12 (29-Aug-2014) Found a dos partition table in /dev/sdb2 Creating filesystem with 7268695 4k blocks and 1818624 inodes Filesystem UUID: 01ad2d41-0ad0-4b22-a402-d4bc93355317 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done /dev/sdb is initialized and resized. Its partitions are: Disk /dev/sdb: 30946MB Partition Table: msdos Number Start End Size Type File system Flags 1 4.19MB 1173MB 1169MB primary fat32 lba 2 1173MB 30946MB 29773MB primary ext4 e2label: Attempt to read block from filesystem resulted in short read while trying to open /dev/mmcblk0p2 Couldn't find valid filesystem superblock. Your booted /dev/mmcblk0p2 rootfs existing label: You may enter a label for the destination rootfs /dev/sdb2: bkuppi ======== Clone Summary ======== Clone mode : rsync all files to sdb root file system Clone destination disk : sdb Clone destination rootfs : /dev/sdb2 (bkuppi) on /mnt/clone Clone destination bootfs : /dev/sdb1 on /mnt/clone/boot Verbose mode : off =============================== Final check, is it Ok to proceed with the clone (yes/no)?: yes => Mounting /dev/sdb2 (bkuppi) on /mnt/clone => Mounting /dev/sdb1 on /mnt/clone/boot =============================== Starting the filesystem rsync to sdb (This may take several minutes)... *** Done with clone to /dev/sdb *** Started: 09:58:10 Finished: 12:13:47 Hit Enter when ready to unmount the /dev/sdb partitions...unmounting /mnt/clone/boot unmounting /mnt/clone =============================== pi@raspberrypi:~/rpi-clone $
最後に
コピーには時間がかかります。大きいことはいいことだ、ということで32GBのカードを使っているのですが、コピーに2時間15分かかりました。忍耐です。終わるまでひたすら忍耐です。