Raspberry Pi を使用していると、様々な理由でOSのバックアップを取得したくなることがあります。
例えば、
- データ破損やハードウェアの破損に備えたい
- 同じ構成で複数の Raspberry Pi を構成したい
- 現在の設定内容を保存したまま、別のOSや設定を試したい
などの理由が考えられます。
Raspberry Pi のOSイメージのバックアップには未使用領域がすべて含まれてしまい、保存されたOSイメージファイルはマイクロSDカードのサイズになります(つまり、64GBのマイクロSDカードを使用している場合は、バックアップファイルも約64GBになります)。 これだと、複数OSイメージをバックアップするとバックアップ先の容量を大量に消費してしまい、あまり好ましくありません。
この記事では、PiShrinkを使ってバックアップしたOSイメージから未使用の領域を削除することで Raspberry Pi のOSイメージバックアップファイルの容量を縮小する方法を紹介します。
例えば、4GBのデータを含む64GBのマイクロSDカードのバックアップイメージを作成すると、元のイメージファイルは約64GB になりますが、このPiShrink を実行すると、約 7GB になります。
- WSL (Windows Subsystem for Linux)を使用できるWindows PC
- Win32 Disk Imager
- PiShrink.shスクリプト
Contents
Raspberry Pi のOSイメージをバックアップする
Win32 Disk Imagerなどを使用して、マイクロSDカードのイメージファイルを保存します。
Windowsのエクスプローラーでバックアップを取得することは出来ません。
必ず、専用ソフトを使ってバックアップしてください。
ここでは、C:\RPI
というフォルダにbackpu.img
というファイル名でイメージを保存します。
PiShrink をインストールする
WSLのターミナルを立ち上げ、以下のコマンドでPiShrinkをインストールします。
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo mv pishrink.sh /usr/local/bin
pishrink.sh
の使い方は以下のとおりです。
Usage: /usr/local/bin/pishrink.sh [-adhrsvzZ] imagefile.img [newimagefile.img]
-s Don't expand filesystem when image is booted the first time
-v Be verbose
-r Use advanced filesystem repair option if the normal one fails
-z Compress image after shrinking with gzip
-Z Compress image after shrinking with xz
-a Compress image in parallel using multiple cores
-d Write debug messages in a debug log file
PiShrink でOSイメージを縮小する
以下のコマンドでOSイメージを縮小します。
cd /mnt/c/RPI
sudo pishrink.sh backup.img
約60GBのイメージを4GBに縮小することができました。
$ sudo pishrink.sh backup.img
pishrink.sh v0.1.3
pishrink.sh: Gathering data ...
Creating new /etc/rc.local
pishrink.sh: Checking filesystem ...
rootfs: 112142/3820160 files (0.2% non-contiguous), 1132709/15383040 blocks
resize2fs 1.45.5 (07-Jan-2020)
pishrink.sh: Shrinking filesystem ...
resize2fs 1.45.5 (07-Jan-2020)
Resizing the filesystem on /dev/loop2 to 1006430 (4k) blocks.
Begin pass 2 (max = 62253)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 470)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 9199)
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop2 is now 1006430 (4k) blocks long.
pishrink.sh: Shrinking image ...
pishrink.sh: Shrunk backup.img from 59G to 4.1G ...
Raspberry Pi にOSイメージをリストアする
SDカードに何かしらのデータがある場合は、SD Memory Card Formatterを使って一度SDカードをフォーマットしておく必要があります。
バックアップしたイメージを書き込んだマイクロSDカードを Raspberry Pi に差し込んで最初の起動時に、SDカードの最大サイズまで容量が拡張されます。
おわりに
PiShrinkを使用すると、元々64GBほどのOSバックアップイメージを未使用領域を削って容量削減することができました。
PiShrink.shの中身を覗いてみたところ、parted
コマンドを使って容量の縮小を行っているようですね。
コメントを残す