理由は定かではないのですが、少し前に5k iMacのデータディレクトリからほぼ全てのデータがごっそりとなくなってしまうという状況に遭遇しました。消失したのはまぁなくなっても困ることは(あまり)ないデータばかりだったのは、本当に不幸中の幸いというしかありません。
もちろんそもそもの問題は、(システムを含めた)データのバックアップをきちんととっていなかったことにあるわけなのですが、これには少しばかり理由(言い訳)もあって・・・。
それは5k iMacに外付けUSB-HDDをつけるとスリープからの回復時にディスクの不正な取り出しダイアログが大量発生してしまうというやつ。色々対策を講じてみたものの、どの方法も残念ながら解決には至らず、結局USB-HDDの外付けをやめてしまい、そのままバックアップもしなくなって・・・だったのです。
ですが、今回はあまり影響はなかったとは言え流石にデータ消失は恐ろしいので、TimeMachineによるフルバックアップを再び検討することに。ただ、ディスクの不正な取り出し問題がOSのアップデートで解決されたことは確認できていません(その情報が見当たらない)。Big Surになって、通知をまとめて消去することはできるようになったみたいですが、それは根本的な問題解決ではありませんので・・・。
そこでサーバに外付けUSB-HDDを接続し、sambaでマウントしてネットワークドライブとし、それをTime Machineのバックアップ先に指定すればいいのではないかと考えました。サーバマシンは24時間稼働していますからそもそもスリープになりませんし(笑)
ただ、標準ではネットワーク上のドライブにTimeMachineを使ってバックアップを取ることはできないようで、少し手順が必要らしく・・・。
以下、サーバへの外付けUSB-HDDの認識、マウント、一般ユーザのホームディレクトリへのショートカットはできているものとします(最終的にはln -sでのショートカットではなく、マウントポイントを作成して直接マウントさせる方法に変更)。
TimeMachineの環境設定からこのsambaマウントのドライブ(ディレクトリ)をデータの保存先に指定できればOkなのですが・・・。
すでにわかっていた通り、目的のドライブを保存先に指定はできませんでした(というか、そもそもドライブを認識していない)。そこで色々探ってみると、こちらの情報にたどり着きました。そちらにはこうあります。
OSX には Time Machine というバックアップシステムがある。
Apple の Time Machine にリモートドライブを利用するメモ
Systems Preferences の Time Machine から Select Disk で見つかるドライブの中から1つを選んで、そこにバックアップをすることができる。
通常これは Apple が売っている Time Capsule というハードディスクや、USB などで直接マシンに繋がっているドライブなどが自動的に認識されて保存対象となる。
しかし、ネットワークの向こうにあるリモートドライブを保存先にしたいときには、普通はそれが自動で検出されないため、一手間かける必要がある。
MacOS Xのバージョンが異なることに一抹の不安がありますが、これは試してみるしかありませんね!(笑)
- スパースバンドルディスクイメージを作成する
ディスクユーティリティ(app)を起動し、
「ファイル」→「新規イメージ」→「空のイメージ」
をクリックして、イメージ作成のウィンドウを開く。
ダイアログで必ず指定しなければいけないのは、「フォーマット」と「イメージフォーマット」の二つ。
後者の「イメージフォーマット」を「スパースバンドル・ディスクイメージ」に変更します。
そして前者ですが、デフォルトのAPFSを「MacOS拡張(ジャーナリング)」に変更しないとスパースバンドルディスクイメージを作成できませんでした。
必要に応じて名前を変更して「保存」すると、完了のダイアログが表示され、指定した場所(ここではデスクトップ)にイメージディスクとマウントポイント(だと思う)の二つが作成されます。
作成時の最上段の「名前」がディスクイメージの、そして中段のそれがマウントポイント(?)の名称を示しているようですね(正しくはディスクイメージだそうです)。
ところで、スパースバンドルディスクって一体なんなんでしょう?
スパースバンドル・ディスクイメージ: スパース・ディスクイメージ(下記)と同じですが、イメージのディレクトリデータを格納する方法が異なります。ファイル拡張子 .sparsebundleが使用されます。
スパース・ディスクイメージ: 必要に応じて縮小および拡大する拡張可能ファイルを作成します。追加スペースが使用されることはありません。ファイル拡張子 .sparseimageが使用されます。
Macでディスクユーティリティを使用してディスクイメージを作成する
んだそうです。
- マウントポイント(ディスクイメージ)をアンマウントする
- ディスクイメージを移動する
「タイムマシン.sparcebundle」(これも名称としてはディスクイメージらしい・・・)を、バックアップ先として指定したいネットワークドライブ(ディレクトリ)に移動し、ダブルクリック。
すると「タイムマシン」が再びデスクトップ上にマウントされます。これは作成場所を「デスクトップ」に指定したから・・・かな?
このデスクトップ上の「タイムマシン」を保存先に指定すると、それが「タイムマシン.sparcebundle」が保存されているディレクトリにつながっている・・・というイメージでいいのかしら?
- ターミナル(app)から、次のコマンドを入力する
$ sudo tmutil setdestination /Volumes/タイムマシン
なお、デスクトップ上のディスクイメージである「タイムマシン」へのパスは、ディスクユーティリティで確認できます。
コマンド入力後、パスワード入力のプロンプトが返されるのでパスワードを入力します。が。
tmutil: setdestination requires Full Disk Access privileges.
To allow this operation, select Full Disk Access in the Privacy tab of the Security & Privacy preference pane, and add Terminal to the list of applications which are allowed Full Disk Access.
とエラーが返されてしまいました。
- エラーの原因を除去
エラーメッセージを訳すと大体こんな感じのはず。
「tmutil setdestinationコマンドは、ディスクへのフルアクセス権限を必要とします。
このオペレーションを許可するには、「セキュリティとプライバシー」のプライバシータブにある「フルディスクアクセス」欄から、フルディスクアクセスを許可するアプリケーションのリストにターミナル(app)を追加してください」。
というわけで、追加します。
フルディスクアクセス欄には候補としてターミナルが入っているので、鍵を開けてターミナルにチェックを入れ、鍵を締めて完了です。
再度ターミナルから上記コマンドを実行すると、今度はエラーが返されることなくプロンプトが帰ってきました。
- 確認する
「システム環境設定」→「Time Machine」を開くと、なんと!
YES!!
保存先のディスクの(デフォルトの)情報が、きちんと「タイムマシン」になっています。
- 動作確認する
これで問題なく行けるはず・・・と思ったら。
スパースバンドルディスク作成時に指定した100MBが、最小容量ではなく最大容量であることは後ほど知ったわけですが、なるほど。
ディスクユーティリティでも100MBしか認識してませんでした。
なら、これを外付けUSB-HDDと同じ1TBにすれば問題が解決するのでは?
と考えて、同様の手順で容量1000GBのスパースバンドルディスクイメージを作成、実験してみたところ・・・。
少なくともディスクユーティリティ上では1TBで認識されています。問題は、Time Machineの環境設定画面ですよね〜。空き容量が103GB・・・。この数値、サーバ上のルートディレクトリ(/homeも含んでいる)用のパーティションサイズ(空きサイズ)に限りなく近いんですが・・・。
ダメ元でバックアップを取ってみると・・・。
おろ?なんかいい感じで進んでいるっぽい?
・・・そして・・・。
!!
いくつかわからない点はあるのですが、それはまたおいおい調べるとして、ひとまずネットワークドライブ上にバックアップを取得することができたようです。
あとはスケジューリングして、バックアップを取っていけるかどうかチェックしつつ・・・ですね!