Mac OS Xのユーザーのホームディレクトリ移動

 もうかなり前ですが、USのMac情報サイトMacNNに、リソースフォークや不可視ファイルも含めて完全にバックアップする方法として、コピーコマンドの「ditto」にmanページのマニュアルに載っていないオプションを付ける方法が掲載されていました。
 これまでにも、てきぢゃ氏の「ちょっとだけ「愛」Mac!」掲示板にて数度に渡りMac OS Xのユーザーのホームディレクトリを、別パーティションに移す方法を提案してきました。今回、上記の方法をベースにして、これでほぼ大丈夫と思われる手順を考えてみました。
  現在、私のMac OS X上では、移動したホームディレクトリは全く正常に動作しています。しかし、動作確認を依頼したてきぢゃ氏の環境では問題が生じているようです(動作が遅くなる等)。
 そこで、皆様方の環境で動作するかどうか試していただければと思い、このページに具体的に方法を図解しました。
 なお、当然の事ながら、これはアップルが公認した方法ではありませんので、あくまでも自己責任ということになります。(もちろん、トラブルが生じた場合の復帰ができるように安全策は用意した方法を下記に示しますが。)
 勇敢な皆様のお力をお借りできれば幸いです。


序〜手順概略〜

 実際の操作手順の解説の前に、どのような作業になるのか、流れをざっと説明します。
1.rootでログインします。
 rootを有効にする方法はネットで簡単に見つけられます。見つけられない方は、このようなカスタマイズをするにはちょっとスキル不足ですので、先に進むのは諦めて下さい。
2.Terminalを起動しdittoコマンドで現行のユーザーフォルダを目的地にコピーする。
3.Terminal上で元のユーザーフォルダの名前を変更する。
4.Terminal上でOS XのUsers内に移動後のユーザーフォルダのシンボリックリンクを作成する。
5.NetInfo Managerでユーザーのホームディレクトリを指定し直し、保存する。
 以上です。あとはログアウトして、そのユーザーとしてログインし直せば、いつも通りに使えるはずです。

1.rootでログイン

 これは特に解説の必要は無いでしょうから省きます。

2〜4.Terminal上での操作

 いよいよ本題です。ここが今回の方法の要です。まずは、現在地と目的地を確認しましょう。

 現在のホームディレクトリの位置は「/Users/hiro」になります。一方、目的地は、

Mac OS Xが入っているのとは別パーティション(実は物理ドライブも違います)のDat+Appです。パスは、「Volumes/Dat+App」になりますので、最終的には、「Volumes/Dat+App/hiro」を新しいホームディレクトリにします。
(掲載した画面写真では本来不可視のはずのファイルやフォルダが見えていますが、これは私の都合でFinderの設定を変えているためです。このような表示になるようにFinderの設定を変える必要は全くありません。)

 実際のTermilal上での操作は下記のようになります。

[localhost:~] root# ditto -v -rsrcFork /Users/hiro /Volumes/Dat+App/hiro
Copying /Users/hiro
[localhost:~] root# mv /Users/hiro /Users/oldhiro
[localhost:~] root# ln -s /Volumes/Dat+App/hiro /Users

10.4以降の場合、dittoが特に設定しなくても正しくリソースフォークを扱うようになりました。そのため、-rsrcForkオプションは不要です。従って、上記のコマンドの表記は、10.4以降の場合

[localhost:~] root# ditto -v /Users/hiro /Volumes/Dat+App/hiro
となります。

(1)ファイルのコピー(1〜2行目)

「ditto -v -rsrcFork」の後に半角スペースを開けて「コピー元」(例では/Users/hiro)を入力し、その後に「コピー先」(/Volumes/Dat+App/hiro)を入れます。この時、必ず、最終的なユーザーフォルダまでパス指定して下さい。全て入力してからリターンキーを押すと、Copying /Users/hiroと表示されて、コピーが行われ、終了するとその下に、[localhost:~] root#と次の入力待ちプロンプトが出ます。

 このようにhiroのコピーがDat+Appパーティションにできます。

(2)旧ユーザーフォルダの改名(3行目)

 削除しても良いと思うのですが、もし仮にうまく行かなかった場合には、すぐ復旧できるように、元のユーザーフォルダは名前を変えて残しておきます。(ちなみに、私の場合は、tar-gzip圧縮したものを保管し、元の形のフォルダを削除してみましたが、ちゃんと新しいホームディレクトリが参照されているようで、全く問題は起きませんんでした。)
「mv」の後に、半角スペースを入れて「旧ユーザーフォルダ(/Users/hiro)」、また半角スペースを入れて「新フォルダ名(/Users/oldhiro)」としてリターンキーを押すと、旧ユーザーフォルダの名前が変わります。

(3)シンボリックリンクを張る(4行目)

 全てのソフトがユーザーのホームディレクトリからの相対パスで設定ファイル等の位置を指定してくれていると良いのですが、そうであるとは言い切れませんので、念のために/Usersに新しいユーザーフォルダのシンボリックリンクを起きます。
「ln -s」の後に半角スペースを開けて「リンク元」(/Volumes/Dat+App/hiro)を入力し、その後に「リンク先」(/Users)を入れます。

 このように、Mac OS Xパーティションの/Usersにはoldhiro(旧ユーザーフォルダ)とhiroのシンボリックリンク(見にくいですが、アイコンの左下にエイリアスを表す矢印があります)ができます。

5.NetInfo Managerでの作業

 ホームディレクトリの指定は/Applications/UtilitiesにあるNetInfo Managerで行います。

 上のようにディレクトリを辿ってゆくと、各ユーザーについて様々な設定が表示されます。左下のカギアイコンをクリックしてrootのパスワードを入力すると変更可能な状態になります。プロパティリスト中の「home」という項目の設定値をダブルクリックして、入力可能状態にし、新しいホームディレクトリの位置(/Volumes/Dat+App/hiro)を入力します。最終的には下記のようになります。

 メニューから保存を選んで、設定の変更を保存し(メニューから保存を選ばないと、設定は実際には変更されません。必ず保存して下さい)、NetInfo Managerを終了します。

6.完了

 全てが終了したら、ログアウトして、設定を変更したユーザーとしてログインしてみましょう。

 このように、新しいユーザーフォルダがちゃんとホームディレクトリとしてOSに認識されています。


動作報告