最初に決める設定:/homeを含めない、保存先は別ディスク
Timeshiftはシステムファイルを以前の状態に戻すツールです。個人ファイルのバックアップには使いません。この前提を誤ると、復元で大事なデータを失うことがあります。初心者が誤りやすい点は次の3つです。
1つ目は/homeを対象に含めるかどうかです。初期設定ではユーザーのホームディレクトリは対象外で、外したままにします。/homeを含めて復元すると、ホーム内の文書や写真もスナップショットを取った時点に戻ります。その後に作ったファイルは消えます。個人データは、Déjà DupやBack In Timeなどのバックアップツールで別に守ります。
2つ目は保存先です。rsyncモードでは、保存先にext4などのLinux用ファイルシステムが必要です。NTFSやexFATでフォーマットしたUSBメモリは選べません。保存先がシステムと同じディスクにあると、ディスクが故障したときにスナップショットも一緒に失われます。
3つ目はモードの選択です。後の節で説明しますが、迷ったらrsyncモードを選びます。
前提:必要なものと環境
この記事は、GRUB(多くのディストリビューションで使われるブートローダー。OSを起動するプログラム)で起動するデスクトップ環境を想定しています。必要なものは次のとおりです。
- sudoを実行できるユーザー
- スナップショットの保存先。システムの使用量と同程度以上の空き容量があるもの
- ライブUSB。インストールに使ったものと同じディストリビューションのもの
ライブUSBは、起動しなくなってから作ろうとしても別のPCが必要になります。この時点で用意しておきます。
手順1:Timeshiftをインストールする
Linux Mintには最初から入っています。執筆時点では、TimeshiftはLinux Mintのプロジェクトが開発を引き継いでいます。ほかのディストリビューションでは、パッケージマネージャ(ソフトウェアを導入・管理する仕組み)から入れます。
# Ubuntu / Debian 系
sudo apt install timeshift
# Fedora
sudo dnf install timeshiftUbuntuでパッケージが見つからない場合は、universeリポジトリが無効になっています。sudo add-apt-repository universe を実行してから、sudo apt update を実行し直します。
手順2:セットアップウィザードで設定する
メニューからTimeshiftを起動すると、管理者パスワードを求められます。初回はセットアップウィザードが開きます。設定は後から「設定」ボタンで変更できます。
rsyncモードとBtrfsモードの選び方
rsyncモードは、ファイルを保存先にコピーします。2回目以降は、変更のないファイルをハードリンク(同じデータを複数の名前で参照する仕組み)で共有します。そのため容量は差分の分だけ増えます。ext4など、ほとんどの環境で使えます。別ディスクにも保存できます。
Btrfsモードは、Btrfsファイルシステムのスナップショット機能を使います。作成は数秒で終わります。ただし条件が2つあります。システムがBtrfs上にあり、Ubuntu型のサブボリューム配置(@ と @home)になっていることが条件の1つです。もう1つは、スナップショットが同じBtrfsボリューム内にしか置けないことです。サブボリューム名が異なる構成では、このモードは使えません。たとえばFedoraの標準インストールが該当します。
自分のルートのファイルシステムは findmnt / で確認できます。FSTYPE列がbtrfsで、上の条件を満たす場合にだけBtrfsモードを検討します。それ以外はrsyncモードを選びます。
保存先の選択
保存先の画面には、選べるパーティションが一覧で出ます。rsyncモードでは、別ディスクのext4パーティションを選ぶのが最も安全です。外付けディスクを使う場合は、スナップショットを取るときに必ず接続しておきます。
スケジュールとユーザーのホーム
スケジュールの画面では、月・週・日・時間・起動時ごとに、残す世代数を指定します。初めは「毎日」と「毎週」を少なめの世代数で有効にすると、容量を圧迫しにくくなります。定期実行にはcronを使うため、cronが入っていない環境では自動作成が動きません。
ユーザーのホームの画面では、各ユーザーについて「除外」を選んだままにします。冒頭で説明したとおり、/homeを含めると復元時に個人データも巻き戻ります。
手順3:初回のスナップショットを作成する
メイン画面の「作成」を押すと、スナップショットの作成が始まります。rsyncモードの初回はシステム全体をコピーします。そのため数分から数十分かかります。2回目以降は差分だけなので短く済みます。
コマンドでも作成できます。アップデートの直前に取る場合は、こちらが手軽です。
sudo timeshift --create --comments 'アップデート前'
sudo timeshift --list--list で、作成したスナップショットの一覧と名前(日時)を確認できます。
手順4:デスクトップ上で復元する
デスクトップに入れるなら、GUIから復元します。手順は次のとおりです。
- Timeshiftを起動し、戻したい日時のスナップショットを選んで「復元」を押す。
- 復元先のデバイスを確認する。通常は現在のルートパーティションが選ばれている。
- ブートローダーの設定はそのままにする。GRUBの再インストールが有効になっている。
- 変更内容の確認を経て実行すると、ファイルが書き戻され、再起動する。
復元の結果が期待と違う場合に備えて、実行前に現在の状態のスナップショットを1つ取っておきます。そうすれば、復元を取り消してその状態に戻せます。
手順5:GUIに入れないときに復元する
テキストコンソールから復元する
ログイン画面が出ない場合でも、テキストのコンソールには入れることがあります。Ctrl+Alt+F3を押し、ユーザー名とパスワードでログインします。続けて次を実行します。
sudo timeshift --restore対話形式で、スナップショット、復元先のデバイス、GRUBを再インストールするかを順に尋ねられます。番号を入力して進めます。
ライブUSBから復元する
コンソールにも入れない場合は、ライブUSBから起動します。インストールせずに試すモードで起動し、ライブ環境にTimeshiftを入れます。Ubuntuなら、手順1と同じくuniverseを有効にして sudo apt install timeshift を実行します。
Timeshiftを起動すると、接続されたディスクからスナップショットを探します。見つからない場合は、設定で保存先のパーティションを指定し直します。スナップショットを選んで「復元」を押したら、復元先にはインストール済みシステムのルートパーティションを指定します。ライブUSB自体を選ばないよう注意します。ディスク暗号化(LUKS)を使っている場合は、途中でパスフレーズの入力が必要です。完了したらUSBを抜いて再起動します。
次にやること:アップデートの前に1つ取る
設定を終えたら、すぐに手動でスナップショットを1つ作ります。sudo timeshift --list で一覧に出ることを確認してください。以後は、カーネルやドライバの更新、設定ファイルの編集の前に、手動で1つ取る習慣をつけます。ライブUSBから実際に起動し、保存先のスナップショットが見えることも一度試しておきます。そうすれば、本当に起動しなくなったときに同じ手順で戻せます。