バックアップ・リストア

背景

ドライブを丸ごとバックアップ/リストアする手順を記載する。
バックアップファイルから特定のファイルを取り出す手順も記載する。

ターゲットOS:Ubuntu 18.04 LTS

手順

バックアップ

Live CDからブート

バックアップ対象をアンマウントする必要がある。
ブートパーティションを含むデバイス全体をバックアップする場合はLive CDから起動する。
一時的にアンマウント可能なデバイスやパーティションをバックアップする場合はLive CDからブートする必要は無い。

パッケージをインストール

リポジトリuniverseを追加しパッケージをインストール。

パッケージ 用途
pv 進捗表示
pigz gzipの並列実行
sudo add-apt-repository universe
sudo apt install pv pigz

デバイスを調査

バックアップ対象のデバイスのパス(例:/dev/sda)を取得。

lsblk
sudo lshw -class disk

バックアップ

コマンドddを実行。
リダイレクトを管理者権限で実行するため sh コマンドを使用する。
ファイルのプレフィックスは .dd.gz が一般的。

sudo sh -c "dd if=バックアップ対象デバイス iflag=nocache | pv | pigz > 【保存ファイル名】"

バックアップファイルを確認

パーティション情報を表示

fdiskコマンドにより対象イメージファイルのセクタサイズと含まれるパーティションの開始位置を表示させる。
mountコマンドで指定するオフセットは、セクタサイズ×パーティションの開始位置で計算できる。
下図は、セクタサイズ=512、開始位置=92160の例を示す。
fdiskでパーティション情報を確認したりマウントする前にはunpigzまたはpigz -dで解凍が必要。

fdisk -l -u バックアップファイル

sudo mount -o loop,offset=$((512*92160)) バックアップファイル  マウント先

リストア

下記のコマンドを実行しリストア。
ofで指定するリストア先に注意が必要。

sudo pigz -dc < バックアップファイル名 | pv | dd of=リストア先