本当に秋が来るのだろうかというほど暑い毎日が続いているが、確実にMavericksの公開日は近づいている。新しいOSは新規インストールが望ましいが、これまで育てたユーザ環境のほうがなにかと使いやすいのも事実。ならばシステムは新規にして、ホームディレクトリは従来のものを使えば……というわけで、今回のテーマは「ホームディレクトリの変更」だ。

「ホームディレクトリ」の役割

手順を説明する前に、ホームディレクトリの役割について確認しておこう。ここに誤解があると、変更できたが以前と様子が変わってしまった、以前は確かに存在したファイル/フォルダがなくなった、というトラブルを招きかねないからだ。

OS Xはマルチユーザ環境が前提のシステムで、ログイン可能なすべてのユーザには「ホームディレクトリ」と呼ばれる専用の作業領域が割り当てられる。作成場所は起動ボリュームの「ユーザ」フォルダ、フォルダ名にはユーザ名が使用されることがセオリーだ。たとえば、ユーザ名が「shinobu」の場合、「ユーザ」→「shinobu」、UNIXのパス表記では「/Users/shinobu」となる。OS Xではディレクトリをフォルダと呼ぶため、「ホームフォルダ」と呼ばれることもあるが、意味するところは変わらない。

ホームディレクトリは、ユーザアカウント作成時に自動作成される。その際「書類」や「ピクチャ」といったフォルダのほか、「.localized」という言語環境に応じてフォルダ名を変えて表示するかどうかの目印になるファイルも作成される。ホームディレクトリ直下には、「.CFUserTextEncoding」などの不可視ファイルも用意される。その存在を前提としたアプリケーションやシステムソフトウェアも少なくなく、勝手に削除すると動作に支障をきたしかねない。新しいホームディレクトリを作成するときには、既存のものをまるごとコピーすることが現実的だ。

OS Xは、ユーザに関する情報は「Open Directory」が管理する(関連記事)。どの領域をホームディレクトリとして使用するかの情報もOpen Directoryが管理するため、新しいホームディレクトリはここに登録しなければならない。

つまり、ホームディレクトリを変更する場合、既存のホームディレクトリをまるごとコピーし、そのパスをOpen Directoryに登録する、という手順を踏まなければならない。ただFinderで「ホーム」をコピーしても、ホームディレクトリとして使うことはできないのだ。

「ホームディレクトリは、起動ボリュームの「ユーザ」以下に作成される。ただコピーするだけでは"引っ越し"できない

Open Directoryに記録されたホームディレクトリの情報は、以下の要領でdsclコマンドを実行すると確認できる

いざホームディレクトリのお引っ越し

ホームディレクトリの役割と存在意義を理解したところで、引っ越し作業を開始しよう。用意するのは、じゅうぶんな空き容量のあるHFS+で初期化した(外付け)ディスクのみ。念のため、作業前にはTime Machineでバックアップを作成しておくこと。なお、動作確認はMountain Lionで行っているが、おそらくMavericksでも同じ方法が使えるはずだ。

まずはTerminalを起動し、mkdirコマンドを使い外付けディスクにディレクトリを作成する。「-p」オプションは、パスの途中のディレクトリが存在しない場合はそれも含めて作成するという意味だ。たとえば、外付けディスクが「ExtHDD」というボリューム名の場合、以下のコマンドラインを実行すると「Users」のサブディレクトリとして「shinobu」が作成される。

$ mkdir -p /Volumes/ExtHDD/Users/shinobu

次に、dittoコマンドを使い現在のホームディレクトリをまるごとコピーする。パス名は「/Users/ユーザ名」なので、適宜読み替えてほしい。なお、「-v」オプションは詳細な情報の表示、「-rsrcFork」オプションはOS X独自のリソースフォーク込みでファイルコピーするという意味だ。最後の「/Volume~」部分は、先ほど作成したディレクトリのパスを指定すること。ホームディレクトリの容量にもよるが、コピー完了まで十数分はみておこう。

$ sudo ditto -v -rsrcFork /Users/shinobu /Volumes/ExtHDD/Users/shinobu

その後、システム環境設定を起動して「ユーザとグループ」パネルを開き、左側にある該当ユーザをControl+クリック、詳細オプションを表示する(左下の鍵が開いている状態でなければオプションが現れないので注意)。この画面の「ホームディレクトリ」に、新たに作成したホームディレクトリのパスを入力し、「OK」ボタンをクリックすれば準備完了。このあと、システムを再起動する。

新しいホームディレクトリのパスを入力したあとシステムを再起動し、作業したユーザでログインする

システムを再起動してログインできたら、まずはホームディレクトリが変更されていることを確認しよう。問題なければ、Terminalでmvコマンドを使い以前のホームディレクトリの名前を変更し、シンボリックリンクを作成する。これで、ホームディレクトリの引っ越しはすべて完了だ。

$ sudo mv /Users/shinobu /Users/bkup
$ sudo ln -s /Volumes/ExtHDD/Users/shinobu /Users/shinobu