SquashFS によるフルシステムバックアップ

提供: ArchWiki
2023年5月20日 (土) 17:58時点におけるKgx (トーク | 投稿記録)による版 (他言語へのリンクを追加)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

ファイルシステム全体の圧縮バックアップアーカイブを SquashFS フォーマットで作成することができます。ランダムアクセスが可能なため、バックアップや取り出しに比較的時間がかかりませんが、追記以外の改変はまだできません。

デバイスファイル 説明
/dev/sdB バッアップドライブ
/dev/sdL ライブメディア
/dev/sdSRC バックアップするドライブ

長所と短所

長所:

  • パーティションなし、必要なサイズの推測なし。
  • SquashFS ほとんどのレスキューディスクでサポートされています。
  • ランダムアクセス で、プレーンな mount を使用する。
  • 重複ファイルはデフォルトで削除されます (no-duplicates フラグがオンでない限り。)

短所:

  • すべての ACL が失われます。
  • Windows 1 からアクセスできません。
  • 追加可能ですが、そこから除去することはできません。
  • 他の目的でディスクを使用するには、バックアップ 2 を破棄する必要があります。
ノート:
  1. squashfs-tools-ng は SquashFS イメージファイルをサポートしているかもしれませんが、Windows 自身はパーティションレスドライブを全くサポートしていません。
  2. swim ring が必要なときに lifebuoy掴まないでください ファイル共有とバックアップは別々のディスクにして下さい。適切なバックアップハードウェアを購入する

バックアップドライブを準備する

警告:
  • バックアップドライブ上のすべてのデータが失われます。
  • 誤ったデバイスファイルを指定すると、マシン上のすべてのデータが失われる可能性があります。
  1. すべてのパーティション /dev/sdBN を消去してから、パーティションテーブル /dev/sdBwipefs で消去します。
  2. すべてのライトキャッシュを同期する #sync
  3. パーティションテーブルの変更をOSに通知する #partprobe
  4. 不正なブロックをチェックする。
    • バックアップドライブが SSD の場合は、S.M.A.R.T. を使用します。
    • バックアップドライブが HDD の場合は、 badblocks を使用します。

ライブメディアの準備

インストールガイド#インストールメディアの準備 または archiso を /dev/sdL にインストールします。

ノート: SquashFS ファイルシステムを作成するには、official Arch Linux installation image に含まれているsquashfs-tools が必要です。

バックアップ

インストールガイド#ライブ環境の起動

ヒント: バックアップドライブとライブメディアの両方に十分な USB ポートがない場合。
  1. ライブメディアを起動する
  2. ブートローダーのメニューが表示されたら、'e' を押します。
  3. カーネルパラメータcopytoram を追加する。
  4. # udisksctl power-off -b /dev/sdL を実行します。(必要 archiso relengudisks2packages.x86_64])
  5. ライブメディアの回転が止まったことを確認し、切断する。

バックアップしたいファイルシステムをマウントします。(例:/dev/sdSRC を /mnt に)

# fsck /dev/sdSRC
# mount -o ro /dev/sdSRC /mnt

を実行します。

バックアップ (サンプルスクリプト)

警告:
  • バックアップドライブのデータはすべて失われます。
  • 不正なデバイスファイルを指定した場合、マシン上の全データが失われる可能性があります。
# mksquashfs /mnt /dev/sdB \
  -not-reproducible \
  -xattrs \
  -wildcards \
  -noappend \
  -progress \
  -mem 5G \
  -e \
    var/cache/pacman/pkg \
    var/lib/pacman/sync \
    var/log/journal \
    boot/efi \
    boot/grub \
    boot/initramfs-linux"*".img \
    boot/vmlinuz-linux
-not-reproducible
バックアップ速度を若干上げる
-noappend
上書き
-mem
mksquashfsに RAM を付与
-e
除外するディレクトリ/ファイルのリスト

QEMU でのバックアップのテスト (任意)

許可を与える

$ sudo chown $USER:$USER /dev/sdB

QEMU を起動する

ノート: カーネルinitramfs はホストマシンのものが使用されます。
$ qemu-system-x86_64 \
  -kernel /boot/vmlinuz-linux \
  -append "root=/dev/sdB ro loglevel=3 init=/usr/lib/systemd/systemd" \
  -initrd /boot/initramfs-linux-fallback.img \
  -drive file=/dev/sdB,index=0,media=disk,format=raw \
  -m virtual_machine_ram_in_MiB \
  --enable-kvm \
  -cpu host

バックアップの検査 (オプション)

バックアップの日付を取得する

# date --date=@"$(unsquashfs -mkfs-time /dev/sdB)"

スーパーブロックの詳細情報

# unsquashfs -stat /dev/sdB

チェックサム

この記事またはセクションの正確性には問題があります。
理由: unsquashfs -stat and df gives different sizes (議論: トーク:SquashFS によるフルシステムバックアップ#)
# COUNT="$(unsquashfs -stat /dev/sdB | grep -F 'Filesystem size' | cut -d' ' -f3)"
# echo "$COUNT Byte"
# numfmt --to=iec-i "$COUNT"
# head -c "$COUNT" /dev/sdB | sha1sum | tee -a sha1sum.txt

バックアップからファイルを取得する

# mount /dev/sdB /mnt
# cp /mnt/path/to/file /path/to/destination

バックアップの復元

ノート:

リストア後にシステムを起動できるようにする。