👻

Raspberry piのバックアップとバックアップイメージの圧縮

に公開

Raspberry Pi のバックアップとバックアップイメージの圧縮

Raspberry Pi を利用する際にイメージをコピーしたいことやバックアップしたいことが多くあります。しかし、まるごとコピーしているとイメージファイルが非常に大きくなってディスクを圧迫したり、クラウドストレージに置きにくくなったりしてしまいます。本記事では、効率的にバックアップを取得し、圧縮・ストレージ効率を高める手法を紹介します。Linux環境での方法になるのでご注意ください。


目次

  1. SDカードのイメージ化(ddコマンド)
  2. PiShrink によるイメージの縮小と圧縮
    • インストール方法
    • 使用の流れとオプション
  3. バックアップ&圧縮の一連手順(スクリプト例付き)
  4. リストア時の注意点
  5. まとめ

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 自動縮小&可逆拡張で効率的なバックアップが可能
gzipxz の圧縮 ストレージ節約に効果的。高速化も可能(pigz並列対応)

おわりに

本ブログが、Raspberry Pi のバックアップ&圧縮を効率的に行うための参考となれば嬉しいです。

Discussion