蔵風人

If you try it, it will be somehow & Simple is Best!

[ HOME ]  [ About ]  [ Linux ]  [ CMS ]  [Python]  [ Blog ]


[ 最終更新日:2026-05-27(Wed) 20:08 ]

バックアップディスクから起動で簡単、完璧バックアップを実現する

1.はじめに

以前「起動ディスクの入れ替え」について書きましたが、今度はこれを応用して、バックアップディスクから起動することにチャレンジしてみました。これが実現すればバックアップは非常に簡単に実現できることになり、万一の備えも万全になります。

2023/03/27 追記 手順を詳細に記述し直しました。

2.第1回目のバックアップと起動ドライブの修正

(1)バックアップディスクには通常の起動ディスクと同じようにEFIパーティションを作って、FAT32 によるフォーマット、残りは ext4 によるフォーマットを行っておくこと。ディスク構成は、以下のような具合です

なお、バックアップディスクは実用的スピード、安定性を考えると、ミラーリングできる USB3 接続の外部ディスクが良いかと思います。

Number Start (sector) End (sector) Size Code Name

1 2048 1050623 512.0 MiB EF00 EFI system partition

2 1050624 3906926591 1.8 TiB 8300 Linux filesystem

(2)/(rootパーティション)を /backup ディレクトリにマウントして rsyncによるフルバックを実施しします

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 232.9G  0 disk 
├─sda1   8:1    0   512M  0 part /boot
└─sda2   8:2    0 232.4G  0 part /
sdc      8:32   0   1.8T  0 disk 
├─sdc1   8:33   0   512M  0 part 
└─sdc2   8:34   0   1.8T  0 part /backup

note! /backupにマウントした/dev/sdc2にフルバックアップする場合のコマンドです。
マウントポイントは各自のシステムに合わせてください。参考:ArxhWiKi

$ sudo rsync -aHAXxS –numeric-ids –delete –exclude={“/etc/boot/“,”/dev/“,”/proc/“,”/sys/“,”/tmp/“,”/run/“,”/mnt/“,”/media/“,”/lost+found”,”/backup/“,”/backup2/“,”/home/*/.gvfs”,”/swapfile”} / /backup &> /dev/null

(3)/backup/etc/fstab の編集

バックアップドライブにある /etc/fstab を編集して、このドライブからの起動に備えます。

まずは、追加するパーティションのUUIDを調べます。

$ sudo blkid

/dev/sdc2: UUID="042fac8f-a3df-439a-b7c6-331e49c8a271" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux" PARTUUID="42885221-1041-4050-9c4f-c5b56f21aa6b"
/dev/sdc1: UUID="D2B4-DA0A" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="b21f1260-b9b8-432d-b442-fd9a5f9dde97"
/dev/sda2: UUID="49b8eabf-f628-426d-ace5-c9b47afc22d1" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux" PARTUUID="9415a39b-e861-4796-919a-98c6ba05bfd2"
/dev/sda1: UUID="B841-8505" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI" PARTUUID="e95a18fd-bc39-41a6-ac0a-ff8cced8a0c7"

/dev/sda と /dev/sdb は従来のデスク。今回追加するのは/dev/sdc パーティションです。

$ sudo nano /backup/etc/fstab

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sdc2
UUID=042fac8f-a3df-439a-b7c6-331e49c8a271   /       ext4        rw,relatime 0 1
# /dev/sdc1
UUID=D2B4-DA0A  /boot   vfat    rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro   0 2

note! オプション類もそのまま

warnig! 一度は /etc/fstab もバックアップから除外せずバックアップしましたが、二度目からはその設定をバックアップディスク用に修正し、 /etc/fstab が バックアップによって上書きされないよう、バックアップの対象から除外してあります。

$ sudo rsync -aHAXxS –numeric-ids –delete –exclude={“/etc/fstab”,”/etc/boot/“,”/dev/“,”/proc/“,”/sys/“,”/tmp/“,”/run/“,”/mnt/“,”/media/“,”/lost+found”,”/backup/“,”/backup2/“,”/home/*/.gvfs”,”/swapfile”} / /backup &> /dev/null

note! 実際にはこのコマンドを crontab に登録して、定期実行しています。

3.Archlinux起動ディスクからの起動

UEFIの起動画面からUSBディスク(ArchLinuxの起動ディスク)を選択して保存、再起動します。コマンドプロンプトになったら

# mkdir -p /mnt/boot
# mount /dev/sdc2 /mnt
# mount /dev/sdc1 /mnt/boot
# arch-chroot /mnt

warning! 正常にマウントしたようでも、arch-chroot後は /boot にマウントされていることが確認できないことが何度かありました。以下のようになっていなければなりません。この場合はシステムを一旦落として、10秒以上経過してから電源を入れてUSBディスクを選択してマウントをやり直してください。

$ lsblk

    sdc 8:32 0 1.8T 0 disk
    ├─sdc1 8:33 0 512M 0 part /boot
    └─sdc2 8:34 0 1.8T 0 part /

# grub-install –target=x86_64-efi –efi-directory=/boot /dev/sdc
# grub-mkconfig /boot/grub/grub.cfg
# exit
# umount -R /mnt
# reboot

4.バックアップディスクからの起動

UEFI画面での起動ドライブの修正は不要で、そのまま起動するのを待っていればバックアップディスクから起動しました。

バックアップ先も外部のドライブ、そしてミラーリングできるドライブだったら完璧?私のところでは10数年前?に購入したHDC2-Uシリーズがこの機能を果たしています。USB2.0でも最初こそ時間はそこそこかかりますが、2回目以降は修正した分だけが更新されていくので、1分程度で終了。通常の作業に支障になりません。

ちなみにメインのドライブが故障して新規のドライブに今の環境を取り戻すには、このバックアップディスクから起動しておいて、新しく使用するメインのドライブを領域確保、フォーマット、マウントしたら、rsync で逆書き込みすれば一気にデータが戻ります。その後は arch-chroot /mntに移動して grub-install grubi-mkconfig と grub を作成すれば、新規のディスクから立ち上がります。

逆書き込みコマンドの一例

$ sudo rsync -aHAXxS –numeric-ids –delete –exclude={“/etc/fstab”,”/etc/boot/“,”/dev/“,”/proc/“,”/sys/“,”/tmp/“,”/run/“,”/mnt/“,”/media/“,”/lost+found”,”/backup/“,”/backup2/“,”/home/*/.gvfs”,”/swapfile”} / /mnt &> /dev/null