👻
Raspberry piのバックアップとバックアップイメージの圧縮
Raspberry Pi のバックアップとバックアップイメージの圧縮
Raspberry Pi を利用する際にイメージをコピーしたいことやバックアップしたいことが多くあります。しかし、まるごとコピーしているとイメージファイルが非常に大きくなってディスクを圧迫したり、クラウドストレージに置きにくくなったりしてしまいます。本記事では、効率的にバックアップを取得し、圧縮・ストレージ効率を高める手法を紹介します。Linux環境での方法になるのでご注意ください。
目次
- SDカードのイメージ化(
ddコマンド) -
PiShrink によるイメージの縮小と圧縮
- インストール方法
- 使用の流れとオプション
- バックアップ&圧縮の一連手順(スクリプト例付き)
- リストア時の注意点
- まとめ
1. SDカードのイメージ化(dd)
まずは、Raspberry Pi の SDカードを丸ごとイメージとして取得する方法です。
sudo dd if=/dev/mmcblk0 of=raspi_backup.img bs=1M status=progress
この方法では SD カードの全領域がコピーされるため、使用容量に関わらずカードと同じサイズのイメージファイルになります。
2. PiShrink によるイメージの縮小と圧縮
インストール方法
以下の手順で PiShrink をインストールできます:
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin/
これで pishrink.sh がどのディレクトリからでも実行できます。
使用の流れとオプション
基本的な使い方は以下の通り:
sudo pishrink.sh raspi_backup.img
主なオプション:
-
-s:ブート時にファイルシステムの自動拡張を無効化 -
-z:縮小後に gzip 圧縮(.gz付き) -
-Z:縮小後に xz 圧縮 -
-a:マルチコアでの並列圧縮(gzip: pigz, xz: コア自動利用) -
-n,-r,-dなどもあります。詳細は README 参照。(GitHub)
なぜ有効なのか?
PiShrink は使用中のデータ部分だけにファイルサイズを削減し、未使用領域を切り捨ててイメージを縮小します。復元時には自動でパーティションを拡張するので、異なる容量のSDカードにも柔軟に対応できるのが大きな強みです。
3. バックアップ&圧縮の一連手順(スクリプト例付き)
以下は、実践的な一連の流れをスクリプト形式でまとめた例です:
#!/bin/bash
# Raspberry Pi バックアップ&縮小スクリプト
BACKUP_DIR="/path/to/backup"
BACKUP_IMG="${BACKUP_DIR}/raspi_$(date +%Y%m%d_%H%M).img"
echo "バックアップ取得中..."
sudo dd if=/dev/mmcblk0 of="$BACKUP_IMG" bs=1M status=progress
echo "PiShrinkで縮小&gzip圧縮中..."
sudo pishrink.sh -a -z "$BACKUP_IMG"
echo "完了!縮小&圧縮後のファイル:"
ls -lh "${BACKUP_IMG}.gz"
-
-a -zオプションにより並列 gzip 圧縮を実現し、高速化+圧縮の両立を図ります。 - スクリプト実行前に、出力先ディレクトリの空き容量に注意してください。
4. リストア時の注意点
- PiShrink で縮小したイメージは、書き込むと自動的に最大サイズに拡張されるので容量の異なるSDカードでも対応できます。
- 手動で縮小したイメージの場合、復元先のカードが小さいと書き込みに失敗する可能性があります。そのため、少し容量の余裕があるカードの利用が安心です。
5. まとめ
| 手法 | 特長 |
|---|---|
dd のみ |
信頼性は高いがイメージが巨大になる |
| PiShrink | 自動縮小&可逆拡張で効率的なバックアップが可能 |
gzip/xz の圧縮 |
ストレージ節約に効果的。高速化も可能(pigz並列対応) |
おわりに
本ブログが、Raspberry Pi のバックアップ&圧縮を効率的に行うための参考となれば嬉しいです。
Discussion