Skip to content

macOSでTime Machineを有効化せずスナップショットをとる

Published: at 12:00 AMSuggest Changes

はじめに

日々のデータ保全の重要性は言うまでもない。しかし、macOS標準のTime Machineを用いた本格的なバックアップは、外部ディスクの準備や設定が手間に感じられる。その結果、対策を後回しにし、日々の操作ミスによってデータを失うリスクを抱えてはいないだろうか。

さらに近年はAIコーディングアシスタントの普及により、意図しないファイル変更・削除といった新たなリスクも身近になっている。

そこで本記事では、日々の偶発的な事故からデータを保護する一つの手段として、macOS標準の「ローカルスナップショット」機能の活用法を紹介する。

ただし、これはあくまでも短期的な復元ポイントを作成するものであり、ディスク故障などに対応する完全なバックアップを代替するものではない。この点を念頭に置き、本機能について見ていこう。

ローカルスナップショットとバックアップの違い

まず、本記事で扱う「ローカルスナップショット」と、Time Machineが外部ディスクに作成するような「バックアップ」との違いを明確にしておく必要がある。

そもそも「スナップショット」とは、特定時点のファイル状態を記録する機能だ。Time Machineの「バックアップ」も概念的にはスナップショットを外部ディスクに保存したものと言えるが、「ローカルスナップショット」とは、保存場所と保存期間の2点で決定的に異なる。ローカルスナップショットは、内蔵ディスクに一時的(通常24時間)に保存されるに過ぎない。そのため、ファイルの誤削除といった直近のエラーは復旧できるが、物理的なディスク故障には無力だ。対照的に、バックアップは外部ディスクにほぼ永続的に保存されるため、物理的な障害からもデータを守ることができる。

Appleの思想としては、このローカルスナップショットはあくまでTime Machineの補助的な存在だ。GUIから有効化するにはTime Machine自体の設定が必須で、スナップショットは通常24時間で自動的に消去される。つまり、外部ディスクへのバックアップこそが本筋であり、ローカルスナップショットはオフライン時の「補助輪」という位置づけなのである。

しかし、コマンドラインツール tmutil を使えば、Time Machineから独立してローカルスナップショットを直接操作できる。

ローカルスナップショットの基本的な使い方

ローカルスナップショットの作成

作成は、ただ tmutil snapshot を実行するだけでいい。

作成したローカルスナップショットは tmutil listlocalsnapshots / で確認できる。

ローカルスナップショットからの復元

個別のファイルを復元したい場合、Time MachineのGUIアプリケーションを利用するのが最も簡単だ。tmutil で作成したローカルスナップショットもTime Machineのインターフェースに表示されるため、過去の時点をブラウズしながら視覚的に復元できる。

コマンドラインからも tmutil restore コマンドで復元は可能だが、操作が煩雑になりがちだ。特別な理由がなければ、GUIから行うのが手っ取り早いだろう。

ローカルスナップショットの取得を自動化する

コマンドラインから簡単に作成できるとはいえ、手作業では必ず忘れる。いざという時に復元できないのでは意味がない。そこで launchd の出番である。

launchd はLinuxでいう systemd のようなサービス管理システムで、ジョブの定期実行も可能である。これを使って、例えば1時間おきにスナップショットを自動作成できる。

私はNix使いなので、nix-darwin に以下のような設定を追加している。これはNixで書かれたコードだが、launchd のplistを見たことがあるなら容易に理解できるだろう。

launchd.daemons.snapshot = {
  serviceConfig = {
    ProgramArguments = [
      "/usr/bin/tmutil"
      "snapshot"
    ];
    RunAtLoad = true;
    StartInterval = 3600;
  };
};

これで1時間おきにローカルスナップショットが作成され、24時間以内であればいつでも復元できる状態が保たれる。

余談だが、さらにAIコーディングツールのフック機能などを使い、ファイル編集の直前にローカルスナップショットを取得するようにすれば、より安全性を高めることができるだろう。

スナップショットとディスク容量

頻繁にローカルスナップショットを作成するとディスク容量を圧迫するのではないかと心配になるかもしれないが、その点は心配無用だ。スナップショットはmacOSのファイルシステム、APFSの Copy on Write という機能を用いて作成されており、変更があったファイルの差分のみを記録する。そのため、スナップショットをいくら作成しても、消費するディスク容量はごくわずかに抑えられる。

まとめ

macOSのローカルスナップショット機能は、煩雑なTime Machineのセットアップなしに、日々の操作ミスなどからデータを保護する一つの手段となる。

ただし、これは完全なバックアップではないことを改めて記しておく。ローカルスナップショットはディスクの物理的な故障には対応できない。重要なコードはGitHubなどにホストし、大切なデータはクラウドストレージにアップロードするなど、本格的なバックアップも別途必ず行っておこう。


Next Post
snix-evalを使ってRustで式を評価する