今回は第399回 で取り上げたバックアップツール、TimeShiftの最新情報をお届けします。
TimeShift今昔物語
TimeShiftは4年ほど前の第399回 で解説しましたが、現在も活発に開発されています。さまざまな点で当時とは大きく変わっているため、あらためて取り上げることにしました。また、当時はユースケースが思いつかず特に便利とは思わなかったTimeShiftをコマンドラインから実行する方法も新たに解説します。
具体的にどこが変わったのかというと、ユーザーインターフェースは一新され別物になりました。しかし、シンプルさは変わりません。そして、バックアップ先は外部ドライブを指定するようになりました。そこにtimeshiftフォルダーを作成し、バックアップを行ないます。
Ubuntuでは、19.04からTimeShiftがオフィシャルリポジトリに追加され、別途PPA を追加しなくてもインストールできるようになりました。ただし最新版を使用したい場合はPPAを追加してインストールするのがいいでしょう。実はPPAも、第399回で示したものでもいいのですが他にもっとふさわしいところが追加されました。
インストール
それでは、TimeShiftのインストールを行います。
前述のとおりUbuntu 19.04以降であればリポジトリにあるものの、最新版にするためPPAを追加することにします。PPAにはUbuntu 16.04/18.04 LTS用のパッケージもあるため(執筆時点) 、これらのユーザーであってもTimeShiftを使用できます。
具体的なインストール手順は次のとおりです。
$ sudo add-apt-repository ppa:teejee2008/timeshift
$ sudo apt install timeshift
Ubuntu 16.04 LTSを使用している場合は[1] 、インストールの前にリポジトリのアップデートを行ってください。
起動と初期設定
TimeShiftを起動し、パスワードを入力するとウィザードが起動します(図1 ) 。スナップショットのタイプをRSYNCまたはBTRFSから選択します。通常、前者のRSYNCを選択して「Next」をクリックします。
図1 ウィザードの最初はスナップショットのタイプの選択
接続されているストレージを認識し、バックアップにふさわしいものを選択します(図2 ) 。空き容量に余裕があるものを選択して「Next」をクリックします。
図2 バックアップ先の場所を選択
自動バックアップのタイミングと、保持するバックアップの数を指定します(図3 ) 。デフォルトの設定では毎日バックアップを行ない、5つのスナップショットを保存するようになっています。ここではブート時にバックアップを行ない、3つのスナップショットを保存するように設定します(図4 ) 。設定が終わったら「Next」をクリックします。
なお、バックアップのタイミングは複数持てますが、その分必要となるストレージの容量は増加します。例えばブート時にバックアップを実行してスナップショットを3つ残し、毎日バックアップを実行して5つのスナップショットも保存するという設定にした場合、全部で8つのスナップショットを残すことになります。
図3 デフォルトでは毎日バックアップを取る
図4 ここではブート10分後にバックアップを取るように設定する
TimeShiftはデフォルトでホームフォルダーを保存しません。ホームフォルダーを保存するかどうかは完全にケースバイケースなので、どちらがいいかは何とも言えませんが、ここでは保存することにします(図5 ) 。保存する場合は「Include All」のラジオボタンをクリックしてください。設定が終わったら「Next」をクリックします。
図5 ホームフォルダーのバックアップを取る場合は「Include All」にチェックを入れる
設定はこれでおしまいです(図6 ) 。「 Finish」をクリックしてください。
図6 ウィザードの最後には注意書きが表示される
バックアップするもの/しないもの
前項では軽く流しましたが、何をどのようにバックアップするのかは悩ましいです。例えば仮想マシンのディスクイメージがたくさんある場合は、TimeShiftと相性が悪い[2] ので、別の方法でバックアップを取るのがいいでしょう。
[2] 仮想マシンのディスクイメージは起動するだけでも変更されてしまいます。そのため、スナップショットのように複数個のバックアップを持つと、そのたびにコピーされてそれだけでもかなりの大きなサイズになり、バックアップ時間もバックアップのストレージも圧迫することになります。別のドライブにrsyncでバックアップを実行するのがいいでしょう。
ここでは、ホームフォルダーをどのぐらいリストアする機会があるのかを考えてバックアップするかどうかを決めるといいでしょう[3] 。そして、そのデータがどのくらい大切なのか、ダウンタイムをどのくらい許容できるのか、バックアップ先のストレージの容量はどのくらいかなどを総合的に勘案し、決定してください。
[3] そのような場合は、UbuntuにあらかじめインストールされているDéjà Dupを使用したほうがいいですが、リストアするのは面倒になります。とはいえバックアップはいくつあっても困らないので、TimeShiftとDéjà Dupを併用するのも一つの手ですが、その分バックアップに必要な容量は増加します。
バックアップの実行
ウィザードの「Finish」をクリックすると、メインウィンドウが起動します(図7 ) 。上部にアイコンが6+2個あり、うち一番左側クリックするとバックアップ(スナップショットの作成)を実行します。
バックアップが完了すると下のリストに表示されますが(図8 ) 、「 Tags」は「O」となります。これはオンデマンドの意味だと思われますが、任意で作成したものとなり原則としては自動削除の対象にはなりません。「 Comments」にはコメントを入れることができるので、必要な場合はわかりやすくするために記述しておくといいでしょう。
図7 TimeShiftのメインウィンドウ
図8 スナップショットを作成したところ
各種機能
バックアップの作成以外の機能として、次項で詳しく解説する「Restore」 、選択したスナップショットを削除する「Delete」 、ファイルマネージャー[4] が起動してスナップショットを確認する「Browse」 、設定を行う「Settings」 、初回起動時に表示されるウィザードを再び表示する「Wizard」があります。
「Settings」と「Wizard」では設定する項目は同じです。それが順番に表示されるか、必要なところだけ設定するかの違いです(図9 ) 。
図9 メインウィンドウの「Settings」をクリックしたところ
画面右端には寄付情報を表示する「Donate」と、ログとTimeShiftの情報を表示する「Menu」もあります。
リストア
リストアをどう行うかは悩ましいです。うまくリストアできる方法として可能性が高いのは、次の方法でしょう。
リストア先のハードドライブ(SSD/HDD)にあらかじめリストア元と同じバージョンのUbuntuをインストールしておく。
USBメモリーなどのライブイメージからUbuntuを起動して、TimeShiftをインストールする。
TimeShiftを起動して、リストアするスナップショットを選択し、「 Restore」をクリックする。そして指示に従ってリストアを行う。
もちろん何もインストールしない状態からのリストアも可能です。ただし事前にフォーマットをしておく必要はあります。また従来のレガシーブート方式では特に気を使うことはなく、普通にEXT4でフォーマットしておけばいいのですが、UEFIブート方式では事前に/boot/efi用のパーティションをFAT32でフォーマットし、さらにマウントしておく必要があります。図10 と図11 がその例です。もちろんEXT4でフォーマットしたルートパーティションも用意してください。
図10 GPartedの設定例。UEFIブート方式ではFAT32でフォーマットし、「 ESP」フラグを立てるのがポイント
図11 UEFIブート方式ではFAT32のパーティションを事前にマウントしておくのもポイント
Ubuntuのライブイメージを準備することは問題ないとして、TimeShiftのパッケージをどのようにインストールするのかもポイントの一つです。リポジトリにあるUbuntu 19.04以降でもUniverseにあるため、Ubuntuソフトウェアなどからはインストールできません。普段は意識しませんが、ライブイメージではUniverseは無効化されています。
よって、PPAを追加するか、またはそれが面倒であればPPAのページをWebブラウザーで直接開いて該当のバージョンのパッケージをダウンロードし、ダブルクリックしてインストールします(図12 ) 。
図12 パッケージを直接ダウンロードする例
TimeShiftをインストールして、リストア元のハードドライブを接続し、起動するとやはり図1と図2のウィザードが起動します。ただし起動しているライブイメージが入ったドライブも表示されていることでしょう。
設定が完了するとメインウィンドウが起動します(図13 ) 。「 Live USB Mode (Restore Only)」という文言が目立ちます。リストアするスナップショットを選択し、「 Restore」をクリックしてください。
図13 ライブイメージから起動した例。リストアしかできない
するとリストア用のウィザードが起動します。従来のレガシーブート方式では「/」だけの設定を行えばいいのですが、UEFIブート方式では「/boot/efi」と「Bootloader Options (Advanced)」をクリックして「(Re)install GRUB2 on:」を変更します(図14、15 ) 。するとリストア先のフォルダーをスキャンして具体的にどのファイルをリストアするのかの一覧が表示されます(図16 ) 。
図14 レガシーブート方式では「/」を、UEFIブート方式ではさらに「/boot/efi」を設定する
図15 UEFIブート方式ではGRUB2のインストール先も変更する
図16 リストアするファイル一覧が表示される
「Next」をクリックすると警告と免責事項が表示されます(図17 ) 。しかし場合によっては表示されないこともありました(図18 ) 。「 Next」をクリックすると実際にリストアが実行され、完了すると注意画面が表示され(図19 ) 、TimeShiftを終了します。
図17 警告と免責事項が表示される
図18 不具合なのか、表示されないこともあった
図19 リストア完了後に表示される注意画面
再起動してもうまく行かない場合は図19の注意にも記載のとおり、別のスナップショットでリストアしてみるか、あるいは図14と15の設定を確認し直してみてください。
まっさらの状態からリストアした場合の注意点は、Ubuntu 18.04 LTS以降ではスワップファイルが/swapfileにありますが、これはバックアップには含まれていないことです。つまり何もインストールされていない状態でリストアするとスワップファイルがありません。
コマンドラインでのバックアップ
デスクトップで何らかのサーバー(デーモン)が動作している場合、バックアップを取るのはそれらのサーバーを終了した後のほうが都合がいいです。ただ、いちいちバックアップの前に手動でサーバーを止めるのは面倒なので、一連の作業をシェルスクリプトにしてバックアップ時に実行するといいでしょう。
TimeShiftは基本的な操作はコマンドラインからも実行できるため、これを使用すると便利です。必要な設定をあらかじめ済ませておく必要がありますが、バックアップを実施するだけであれば次のコマンドを実行してください。
$ sudo timeshift --create
コマンドラインでバックアップを取ることの利便性は、タグを付けられるところです。任意(オンデマンド)で実行したにもかかわらず、タグを付けると、定時のタイミングでバックアップを取ったことと同じになります。
これの何が便利かというと、スナップショットは自動実行のタイミングごとに保存数を決められますので(図3をもう一度ご覧ください) 、この数内に収められるということです。例えばブート後に自動バックアップを行うように設定し、保存数を5個にした状態で次のコマンドを実行します。
$ sudo timeshift --create --tags B
あるいは、識別用にコメントをつけてみます。
$ sudo timeshift --create --tags B --comments "コマンドラインからバックアップを実行"
バックアップ完了後TimeShiftを起動してみると、先程のスナップショットは「Tags」が「B」になっており、ブート後にバックアップしたものとみなされています(図20 ) 。
図20 コマンドラインからオンデマンドで実行したにもかかわらず、ブート時にバックアップしたものとみなされている
もしブートだけですでに5個のスナップショットがあった場合、自動的に一つ削除します。これにより、バックアップ先の容量を充分に確保することができる、というわけです。
もちろんバックアップ先のストレージ容量が足りなくなった場合は、任意のタイミングで取ったスナップショットも削除されるようになりますが、自分でコントロールすることはできません。手動管理も面倒なので、タグを使用して制御するのが楽で確実でしょう。