2014-03-21

新しいボリューム名のシステムディスクでTime Machineのバックアップを無理矢理引き継ぐ裏技

Time Machineは画面が斬新なだけでなく、仕組みも非常に汎用性があって、とても好感の持てる技術です。
前の投稿では、素直にシステムディスクのボリューム名を揃えて、Time Machineのバックアップを引き継ぐ方法をご紹介しましたが、今回は少しひねった裏技的な方法をご紹介したいと思います。

Time Machineのバックアップの実体は、[コンピュータ名]-[バックアップ日時]-[システムボリューム名]-[実際のフォルダ] という構成になっていて、Finderやshellコマンドから簡単にアクセスできます。
変更の無いファイルの重複保存を回避するためにhard linkを使用し、ファイル実体の保持は1回で済ませるようになっています。
バックアップの中身に簡単にアクセスできるとはいえ、無造作に構造を破壊されないように、ACL (access control list) を使って変更操作は行えないような保護もなされています。

新しいディスクに入れ替えたときに、システムディスクのボリューム名を以前と同じ名前にしていれば、Time Machineバックアップがそのまま引き継がれることは前の投稿に書いた通りです。
それでは、新しいディスクに新しい名前をどうしてもつけたい場合は、どうすれば良いのでしょうか。
そうです、Time Machineバックアップ側をなんとか新しい名前に変更すれば良いのです。
以下の裏技的手順で可能です。
  • システムディスクを入れ替えて、以前のシステムディスクの名前は [Macintosh HD]、新しいシステムディスクの名前は [HDD1TB] とします。Time Machine用の外付けディスクのボリューム名は [TM] で、まだ動かし始めていないものとします。コンピュータ名は [Macmini61] として説明します。
  • Time Machineバックアップ実体の中身
  • まずは、Time Machine用外付けディスクを接続し、バックアップの中身を表示します。[TM]- [Backups.backupdb]- [Macmini61]- [日時]- [Macintosh HD] の階層構造になっていると思います。
  • ゴミ箱に入れられたバックアップ
    [Backups.backupdb] 配下の [Macmini61] を [ゴミ箱] に放り込みます。管理者パスワードを聞かれます(これは危険な操作なので)。バックアップをゴミ箱に入れることで、ACLが一部無効化され、変更操作を行えるようになります(ただしFinderからは依然、更新操作は行えません)。
  • [ターミナル]を起動します。まずは次のコマンドで、ゴミ箱に入れたバックアップ中のシステムボリュームの一覧が表示されるかを確認します。
    $ sudo bash
    # cd /Volumes/TM/.Trashes/
    # cd 501/Macmini61/
    # find  .  -name  Macintosh¥ HD  -maxdepth 2
    ※ 3行目のフォルダ名 501 は別の英数字の可能性があるので実際に存在するものを指定してください。
    ※ さいごの find コマンドで [日時]-[Macintosh HD] の全件が表示されるはずです。画面ダンプでは [Latest] というフォルダがありますがこれはこのコマンドでは表示されません。
  • 次のコマンドですべての [Macintosh HD] フォルダの名前を [HDD1TB] に一気に変更します。
    この操作はFinderで手作業で行うことも出来ますが、いちいち管理者パスワードの入力を求められるのと、数が多い場合に日が暮れてしまうため、shellコマンドを使用するのが良いと思います。
    また、Automatorで同じ操作をなんとかできないかとも考えてみましたが、管理者操作になるためちょっと無理そうです。
    # find  .  -name  Macintosh¥ HD  -maxdepth 2  -execdir mv Macintosh¥ HD  HDD1TB  ¥;
  • Finderでゴミ箱を開いて変更がちゃんと出来ているかを念のため確認します。
  • 最後に、ゴミ箱に入れたバックアップを、本来の場所に戻します。
    この操作をFinder行おうとしても「バックアップ項目は変更できないため、操作を完了できません。」という見たことのないエラーで実行不可能です。
    ゴミ箱に入れる時はFinderでの操作ですが、ゴミ箱から戻すときはshellの操作が必要です。
    # cd /Volumes/TM/.Trashes/
    # cd 501/
    # mv  Macmini61  /Volumes/TM/Backups.backupdb/
  • Time MachineをONにして、ちゃんとバックアップが作成されるか確認してください。
いかがでしょうか。
なお、この方法をうまく応用(あくまでもうまく応用、であって単純にまねただけではダメな場合もあると思います)すると、マシンを新しくした場合に古いマシンのTime Machineバックアップを引き継ぐとか、あるユーザだけのバックアップを他のマシンにコピーするとか、も可能になりうると思います。

[2016-06-03] findコマンドの-execdirオプションは、古いLinuxにはなかったのですが、便利なオプションです。見つかったファイルを含むフォルダでコマンドを実行してくれます。

No comments:

Post a Comment