SquashFS によるフルシステムバックアップ
関連記事
SquashFS [1] は完全なシステムの読み取り専用のバックアップアーカイブを高圧縮で作成します。SquashFS アーカイブは解凍しなくてもマウントして find/grep/cp/tree を実行できるので便利です。tar と比べてバックアップにかかる時間は少なくファイルの取得・検索のオーバーヘッドも減りますが、アーカイブに一度してしまうと後から変更できないという欠点があります。
Overview
It's possible to make compressed read-only backup archives of whole filesystems in the SquashFS format. It is convenient since you can mount it and find/grep/cp/tree in it without decompressing the whole archive. Backup and retrieval may take less time compared to tar, but modifying an existing archive is impossible.
ライブ CD/DVD/USB の準備
SquashFS アーカイブを作成するには squashfs-tools がインストールされているライブ CD/DVD/USB を用意する必要があります。Archiso#ライブメディアの設定を読んで packages.x86_64
を設定して squashfs-tools がインストールされているライブ CD/DVD/USB を作成してください。
ライブ環境でバックアップ
ライブ CD/DVD/USB を起動してバックアップしたいファイルシステムをマウントしてください。
# fsck /dev/sdb2 # fsck /dev/sdb1 # mount /dev/sdb2 /mnt # mount /dev/sdb1 /mnt/boot/efi # /somewhere/mksquashfs.sh SOURCE_DIRECTORY BACKUP_ARCHIVE_DIRECTORY
スクリプトの中身:
/somewhere/mksquashfs.sh
#!/usr/bin/env bash # Sanity if [ $# -ne 2 ]; then echo "invoke: mksquashfs.sh SOURCE_DIRECTORY BACKUP_ARCHIVE_DIRECTORY" exit 1 fi echo -ne "\n\nHave you fsck'd? " read # Backup mksquashfs \ "$1" "$2/$(date +%Y%m%d_%a).sfs" \ -comp gzip \ -xattrs \ -progress \ -mem 5G \ -wildcards \ -e \ boot/efi \ boot/grub \ boot/initramfs-linux"*".img
リストア (解凍)
#!/bin/bash # Path to extract files target=/mnt # Path to backup SquashFS archive file archive=/somewhere/backup.sfs unsquashfs -stat $archive unsquashfs -force -dest $target $archive
リストア (マウントとコピー)
mount somewhere/backup.sfs /mnt
cp /mnt/somefile /somewhere/damaged-somefile