2005.08.28追記
10.4以降、dittoコマンドは特にオプションを指定しなくてもMacのリソースフォークを正しく扱うことができるようになりました。従って、「-rsrcFork」オプションは必要ありません。
初期設定でリソースフォークごと複製するように動作が変更されましたので、逆にリソースフォークをつけずに複製するオプションが用意されました。「-norsrc」オプションを使うと、データフォークだけを複製できるようになります。
以前からMacOS Xのホームディレクトリ移動の頁で使っておきながら今まで紹介していなかったファイル複製コマンドのdittoを紹介します。同じファイル複製コマンドでも、cpとはちょっと違いますので、気をつけて下さい。
はじめの実験は下記のような構成のterminaltestと、中身が空のterminaltest2を用いて行います。

使い方は、「ditto 複製元 複製先」です。それでは、terminaltestにあるtestfolder1をterminaltest2に複製してみましょう。
[u094:~] hiro% ditto terminaltest/testfolder1 terminaltest2 [u094:~] hiro% ls -l terminaltest2 total 24 -rw------- 1 hiro staff 245 Jul 1 12:50 test1.rtf -rw------- 1 hiro staff 245 Jul 1 12:50 test2.rtf -rw------- 1 hiro staff 245 Jul 1 12:50 test3.rtf [u094:~] hiro% ls -l terminaltest/testfolder1 total 24 -rw------- 1 hiro staff 245 Jul 1 12:50 test1.rtf -rw------- 1 hiro staff 245 Jul 1 12:50 test2.rtf -rw------- 1 hiro staff 245 Jul 1 12:50 test3.rtf
cpとはちょっと結果が違いますね。違いをリストアップしてみましょう。
1.dittoではオプションの指定無しでディレクトリの内容をコピーできます(cpの場合-Rオプションが必要です)。
2.ファイルの情報が保存されます(cpの場合、普通に使うと、複製した時間が修正日となります。情報を保存するには-pオプションが必要です。dittoでは上記のように、情報が保存されています)。
3.ディレクトリの内容が複製先の中に展開されます(cpの場合、上記の例と同じようにcp -Rp terminaltest/testfolder1
terminaltest2とすると、terminaltest2中にtestfolder1が作られますが、dittoではtestfolder1の中身が直接terminaltest2に複製されています)。
上記の例のように、普通にdittoすると、何の表示も出ずに、処理が終わるといきなり次のプロンプトが出ますが、これでは寂しいので、処理の表示をさせてみましょう。
まずはシンプルにやってみましょう。小文字の「-v」オプションを使います。
[u094:~] hiro% ditto -v terminaltest/testfolder1 terminaltest2 Copying terminaltest/testfolder1
これで作業中であると言う表示を出せました。こんどはもっと詳細に表示させてみましょう。大文字の「-V」オプションを使います。
[u094:~] hiro% ditto -V terminaltest/testfolder1 terminaltest2 >>> Copying terminaltest/testfolder1 copying file ./.DS_Store ... 6148 bytes copying file ./.FBCIndex ... 10240 bytes copying file ./.FBCLockFolder/.FBCSemaphoreFile ... 6 bytes copying file ./test1.rtf ... 245 bytes copying file ./test2.rtf ... 245 bytes copying file ./test3.rtf ... 245 bytes
すると、このように、複製するファイル毎に細かく表示されます(中身の多いディレクトリでこれをやると興味深いことになるので、気を付けてお使い下さい)。
さて、旧OSとの共存を考える時、cpやdittoには困った問題があります。それは、これらのコマンドでは、どうやら、リソースフォークを正しく扱えないらしい、ということです。
実際に試してみましょう。
[u094:~] hiro% cp /Volumes/Dat+App/Applications/SimpleText terminaltest [u094:~] hiro% ls -l terminaltest total 24 -rwxr-xr-x 1 hiro staff 0 Dec 7 21:53 SimpleText -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test1.rtf -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test11.rtf -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test3.rtf drwxrw-rw- 8 hiro staff 228 Sep 2 14:29 testfolder1 [u094:~] hiro% cp -Rp /Volumes/Dat+App/Applications/SimpleText terminaltest/SimpleText2 [u094:~] hiro% ls -l terminal test ls: terminal: No such file or directory ls: test: No such file or directory [u094:~] hiro% ls -l terminaltest total 24 -rwxr-xr-x 1 hiro staff 0 Dec 7 21:53 SimpleText -rwxrwxrwx 1 hiro staff 0 May 30 1997 SimpleText2 -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test1.rtf -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test11.rtf -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test3.rtf drwxrw-rw- 8 hiro staff 228 Sep 2 14:29 testfolder1 [u094:~] hiro% ditto /Volumes/Dat+App/Applications/SimpleText terminaltest/SimpleText3 [u094:~] hiro% ls -l terminaltest total 24 -rwxr-xr-x 1 hiro staff 0 Dec 7 21:53 SimpleText -rwxrwxrwx 1 hiro staff 0 May 30 1997 SimpleText2 -rwxrwxrwx 1 hiro staff 0 May 30 1997 SimpleText3 -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test1.rtf -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test11.rtf -rwxr--r-- 1 hiro staff 245 Jul 1 12:50 test3.rtf drwxrw-rw- 8 hiro staff 228 Sep 2 14:29 testfolder1
このように、cp、cp -Rp、dittoのいずれも正しく旧OS用アプリのSimpleTextをコピーできていません。Finder上で見ると見事な白紙アイコンです。そこで、かつてMacNNで話題になった完全バックアップオプションの出番です。 「-rsrcFork」というオプションを使います。いかにもリソースフォークを扱いそうなオプションです。これは、Terminalでman dittoしても出てきません。
[u094:~] hiro% ditto -rsrcFork /Volumes/Dat+App/Applications/SimpleText terminaltest/SimpleText4
と唱えると、下記のようにちゃんとしたサイズでアイコンもある正常なSimpleTextになります。

Mac OS Xのユーザーのホームディレクトリ移動で使用しているように、ファイル情報をすべて保持した状態でファイルを複製する際には必須のコマンドですね。