So-net無料ブログ作成
検索選択

大文字/小文字の区別が微妙 [Netatalk and Samba]

netatalkのLeopard関連速報 9)
大文字/小文字の区別が微妙

MacOSは昔からファイル名の大文字/小文字の区別ナシでしたが、最近は区別アリでフォーマットする事が可能です(HFSX)。ほとんど利用されなかったUFSも区別アリでした。
netatalkはどうかというと、微妙です。
区別アリのボリュームからnetatalkにコピーする際は注意しましょう。

netatalkのボリュームに、まず小文字のabcというフォルダを作り、次に大文字のABCというフォルダが作れるかどうか実験をしてみました。

実験その1) Finderでやってみる

失敗します。
「名前"ABC"はすでに使用されています。別の名前を選んでください。」
という警告が表示されました。
これの原因は、WireSharkでパケットをダンプしたらわかりました。
FinderはABCというフォルダを作る前に、afpサーバに対してABCというフォルダの情報をよこせというリクエストを出します。するとnetatalkは、abcフォルダの情報を返してきます。既にフォルダが存在しているのでFinderはフォルダ作成を諦めます。

実験その2) コマンドラインでやってみる

# mkdir abc
# mkdir ABC
# ls -ilF
total 0
140706 drwxr-xr-x@ 2 hat  hat  264 Nov 15 23:47 ABC/
140705 drwxr-xr-x@ 2 hat  hat  264 Nov 15 23:47 abc/


成功です。区別されたフォルダが出来ます。lsコマンドに-iオプションをつけてinodeを表示してみると、ちゃんと別のinodeになっている事がわかります。なお、このinodeはCNIDと同じです。
フォルダの存在を確認しなければ、出来ちゃうわけですね。

元々、MacOSは大文字小文字を区別しなかったので、netatalkも区別しないように実装されています。ソースをみればわかりますが、大文字小文字区別なしで文字列を比較する関数が使われています。ファイル名について問い合わせがあれば、大文字小文字区別なしで検索して返答します。
そういう問い合わせをしないでいきなり作成した場合、この関数が呼び出されないので結果的にabcとABCが共存してしまうわけです。

[追記]
netatalk 2.1では大文字小文字が区別されます。 caseinsensitiveというオプションがあり、これを使うと区別なしになりますが、ファイルシステムに区別なしのものを使っている場合のみでしか動作確認されていません。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0