最初に決める設定:/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 timeshift

Ubuntuでパッケージが見つからない場合は、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から復元します。手順は次のとおりです。

  1. Timeshiftを起動し、戻したい日時のスナップショットを選んで「復元」を押す。
  2. 復元先のデバイスを確認する。通常は現在のルートパーティションが選ばれている。
  3. ブートローダーの設定はそのままにする。GRUBの再インストールが有効になっている。
  4. 変更内容の確認を経て実行すると、ファイルが書き戻され、再起動する。

復元の結果が期待と違う場合に備えて、実行前に現在の状態のスナップショットを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から実際に起動し、保存先のスナップショットが見えることも一度試しておきます。そうすれば、本当に起動しなくなったときに同じ手順で戻せます。