TimeMachineのように使用できるLinux向けのスナップショットアプリTimeshiftの使い方

公開日:2019/06/26 更新日:2019/06/26
TimeMachineのように使用できるLinux向けのスナップショットアプリTimeshiftの使い方のサムネイル

はじめに

Macを使っていた頃はTimeMachineを使ってスナップショットを取っていました。TimeMachineでスナップショットを取っておけば万が一のことがあっても簡単に特定の日時の状態に復元することができるため必ず使っていました。Ubuntuを常用するようになってからは特にTimeMachineのようなアプリを知らなかったため使用していませんでしたが、スナップショットを取得して復元できるTimeshiftというアプリがあることを知りました。TimeshiftはLinux用のTimeMachineといったところです。この記事では、UbuntuにTimeshiftをインストールする手順とスナップショットを作成するまでの使い方をまとめます。

できるようになること

Linuxのスナップショットを保存できるようになります。なお、スナップショット対象とする、または除外するファイルやフォルダの指定やスナップショットの保存タイミングを細かく制御できます。

snapshot-daily-sample.png

スナップショットの作成タイミングを細かく指定できる

filter-settings.png

スナップショットに含める、除外する対象をフィルタで指定できる

前提と環境

以下の通りです。

  • OS : Ubuntu18.04
  • バックアップ取得用の外付けストレージ: Samsung T5

Timeshiftについて

TimeshiftはWindowsの「システム復元」やMacOSのTimeMachineのような機能を持つアプリです。Timeshiftではユーザのデータ(ドキュメントや音楽、動画データ等)をバックアップすることよりもシステムを非常時の前の状態に戻すことを目的としているようで、公式サイトではユーザのデータをスナップショットの対象に含めないことをおすすめしています。ただし、ユーザのデータをスナップショット内に含めることももちろん可能となっており、またフィルタを作成してスナップショット対象とする範囲を細かく制御できるようになっています。 Timeshiftには以下のような特徴があります。

機能 内容
差分のみ保存 スナップショットは差分のみ保存するため、無駄にディスクを消費しません。
マルチレベルでのスナップショット保存 スナップショットの保存タイミングと頻度、そして最新何代までを保存するかを指定できます。なお、よくあるバックアップソフトのように指定した曜日や時間にバックアップを作成するのではなく、時間、日、週、月単位でスナップショットを保存します。つまり、例えば時間単位の場合は、スナップショットを初めて作成した時点から1時間後に次のスナップショットを作成します。最新何代のスナップショットを保存するかも指定できます。
スナップショット保存・除外対象とするフィルタ スナップショット対象に含めるまたは除外するフォルダ、ファイルをフィルタで細かく制御可能です。正規表現を使ったファイルの指定も可能です。
オンラインリストア システムが稼働している状態でスナップショットからシステムをリストアできます。
クロスディストリビューションでのリストア 例えばXubuntuで取得していたスナップショットをLinux Mint上でリストアすることも可能です。(ただし隠しファイルをスナップショットに含めるなどいくつか注意点もあるため公式ドキュメント参照)

Timeshiftは以下の公式リポジトリで公開されています。使い方や特徴についても詳しく書かれています。

github.com

System restore tool for Linux. Creates filesystem snapshots using rsync+hardlinks, or BTRFS snapshots. Supports scheduled snapshots, multiple backup levels, and exclude filters. Snapshots can be restored while system is running or from Live CD/USB.

Timeshiftをインストールする

インストール方法は簡単で、以下のコマンドを順番に実行します。

$ sudo add-apt-repository -y ppa:teejee2008/ppa
$ sudo apt-get update
$ sudo apt-get install timeshift

最初のコマンドでTimeshiftのリポジトリを追加してインストールしています。

Timeshiftを起動して設定する

Timeshiftは以下のようにアクティビティから検索して起動できますし、端末からも起動できます。

timeshift-search.png

Timeshiftを起動すると、以下のようなウィンドウが表示されます。「Help」と書かれた部分をクリックすると以下のように説明が表示されます。なお、以降の設定は全て後ほど設定し直すことができます。

setup-wizard-1-2-help-arrow.png

上記ではスナップショットのタイプを選択する必要があります。選択肢は以下の2つになります。私の環境ではファイルシステムとしてBTRFSを使用していないため、RSYNCを選択します。

RSYNC Linuxコマンドのrsyncを使用してスナップショットを作成します。rsyncでシステム上のファイルをコピーします。また、スナップショット間の差分については、差分がないファイルはハードリンクで管理されます。ハードリンクについて知りたい方は、ハードリンク (hard link)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典がイメージの理解とシンボリックリンクの違いを理解するのに参考になると思います。
BTRFS 全てのスナップショットはブロックレベルで作成されます。ここのブロックというのは、BTRFSというLinuxのファイルシステムにおけるブロックです。BTRFSについて知りたい方はBtrfs - archlinuxに詳しく書かれており参考になると思います。

なお、BTRFSに必要なパッケージがインストールされていない場合は以下のようにエラーが表示されます。

BTRFS-not-avialable.png

スナップショットのタイプを選択後、ウィンドウ下部にある「Next」をクリックすると、以下のようにシステムサイズの計算がはじまりますので少しだけ待機します。

checking-system.png

続いて、「Select Snapshot Location」というウィンドウに移り、スナップショットの保存場所を指定するよう要求されます。

supported-format.png

もし指定した場所のフォーマットがLinuxのフォーマットになっている場合は以下のようにメッセージが表示されますので、新しくExt4などでフォーマットするか、もしくはすでにフォーマットされている外部ストレージを使用する必要があります。

not-supported-format-linux.png

スナップショットの保存場所を選択して、「Next」をクリックすると、以下のように「Select Snapshot Levels」というウィンドウが表示されます。ここでは、スナップショットの保存レベルを選択します。ここでのレベルというのは、スナップショットの保存タイミングと頻度、そして最新何代までを保存するかを指します。

select-levels.png

上記画像にあるように、レベルはMonthly(毎月)、Weekly(毎週)、Daily(毎日)、Hourly(毎時)、Boot(毎起動時)を選択できます。Dailyで数値を5に設定すると、1時間毎のスナップショットを5世代分保存します。なお、Bootを選択した場合は、Linuxが起動する度にスナップショットの作成が開始されますが、起動直後ではなく起動してから10分後に作成するようになっています。

レベルを選択後、「Next」をクリックすると最後に「User Home Directories」というウィンドウでユーザのホームディレクトリをスナップショットに含めるかを選択します。

select-home-directory.png

冒頭でも書いたように、Timeshiftはスナップショットにユーザのデータを含めないことを推奨しており、デフォルトではルートユーザを含むユーザのホームディレクトリは「Exclude All」(全て除外)に選択されています。 もしユーザのホームディレクトリ内の隠しファイル(例えば、.bashrcなど)をスナップショットに含めたい場合は「Include Hidden」、ユーザのホームディレクトリ内の隠しファイル含む全てのファイルをスナップショットに含めたい場合は「Include All」を選択します。 選択後、「Next」をクリックすると以下のように「Setup Complete」というウィンドウが表示されるのでウィンドウ下部にある「Finish」をクリックして完了です。

setup-complete.png

Timeshiftでスナップショットを作成する

設定が完了すると、以下のようなダッシュボードが開きます。以下で「Create」をクリックするとスナップショットの作成が開始されます。

dashboard-create.png

スナップショットの作成が開始すると、以下のように始まりますのでしばらく待機します。

creating-shapshot.png

スナップショットの作成が完了すると、以下のように作成日時とともにスナップショットの情報がリストに追加されます。

snapshot-created.png

なお、スナップショットのファイル自体は、指定したロケーション直下に/timeshiftというディレクトリが作成されその中に保存されます。

スナップショットに含める、除外する対象をフィルタで指定する

Timeshiftではフィルタ機能も用意されています。フィルタを作成するには、以下のように「Settings」をクリックします。

settings.png

その後、「Filters」タブをクリックするとフィルタが表示されます。

filter-settings-tab.png

上記ウィンドウ内の下部にある「Add」をクリックすると、以下のように正規表現でのパターンを入力するためのダイアログが開きます。ここで自由に指定したいパターンを入力して、「OK」をクリックします。

add-filter-express.png

もしくは、「Add Files」でファイル、「Add Folders」でフォルダを選択して指定できます。「Add Files」、「Add Folders」をクリックすると、ファイルやフォルダの選択ダイアログが表示されます。 選択すると、以下のようにフィルタが追加されます。追加されたフィルタにはそれぞれ「+」、「ー」を選択できるようになっており、「+」でスナップショット対象に含める、「ー」でスナップショット対象から除外するためのフィルタになります

add-filter.png

ウィンドウ下部右端にある「Summary」をクリックすると、指定したフィルタによってどのファイル、フォルダが除外されるかを確認できます。

exclude-list-filter.png

まとめ

Timeshiftを使用することで非常時にシステムを復元できるという安心感が得られます。まだ実際に復元をしてみてまとめれればと思います。

関連記事

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。