2009-10-26

ResourceForkを除去する

フォルダ内の大量のファイルから一気にリソースフォークを削除する方法。

rsyncを使う

リソースデータを除去したいファイルがたんまり入ったフォルダの名前を「/path/to/src_folder」、除去後のファイルを格納するフォルダが「/path/to/dst_folder」であるとする。

$ rsync -av /path/to/src_folder/ /path/to/dst_folder/

のようにrsyncすることで、リソースフォーク部分を取り除いてデータフォークだけを目的のフォルダ内にコピーすることができる。(-E オプションを付けるとリソースフォークも一緒にコピーできる。あたりまえだが、今回は付けてはいけない。途中経過を気にしないのであれば、vオプションも省いてよい。)

なぜそんな必要が?

Webサーバーの引っ越しで、データを移し替えていたところ怪現象に遭遇。 MacではメジャーなFTPソフト、アヒル隊長こと「CyberDuck」で、サイト全体のデータファイルをダウンロードしたのだが、サーバー上では35.1MB程度のデータ量だったのが、ダウンロードしたフォルダの容量をチェックすると348.9MB?! ファイル数は代わらないが、なんと容量が10倍近くに膨れ上がっていた。 原因を調べるため、テキストファイルの一部について属性を見てみると、

$ ls -@l robots.txt
-rwxr-xr-x@ 1 poohtaro  staff  129  5 31  2007 robots.txt
       com.apple.FinderInfo    32 
       com.apple.ResourceFork 117265 

なぜかリソースフォークが……
どうやらリソースデータはカスタムアイコンのようだ。CyberDuckが付けたのか? しかも全てのファイルに? そりゃデータ量も10倍に肥大化するわな。なんという余計なお世話。

その数2,700もあるファイルのカスタムアイコンをいちいちFinderから手作業で取り除いていたら日が暮れるのでrsyncを使う方法を試してみたというわけ。

2009-10-08

Dockを終了する

killallでもいいんだけど

Mac OS XのDock(ドック)をリセットする方法として、よく、

$ killall Dock

というのを見かけるが、これって、ちょっと乱暴ではあるまいか。

$ osascript -e 'tell application "Dock" to quit'

としてはどうか。

Dockを初期状態に戻す

AppleScriptを使ってDockを初期状態に戻してみよう。※Dockに自分が独自に追加/削除したアプリケーションアイコンとかきれいさっぱり失われるので、そうしたくない人は間違っても実行しないこと。

tell application "Dock" to quit
do shell script "rm ~/Library/Preferences/com.apple.dock.plist"

LeopardのDockを2D表示に」も参照。