OS Xリソースフォークは、通常のファイルに添付されたデータの代替ストリームです。それらには、ファイルのカスタムアイコン、色付きラベル、キーワード、またはユーザーやアプリケーションによって設定されたその他のメタデータが含まれる場合があります。
それらはOS XのHFS +ファイルシステムでネイティブにサポートされていますが、OS Xがローカル(FAT32)でもリモート(NFS、SMB)でも、別のファイルシステムをマウントするときはいつでも、いわゆる「ドットバー」ファイルに保存されます:通常のファイルのリソースフォークname.ext
は、通常の隠しファイル._name.ext
に保存されています。 (アイコンと列ビューなどのディレクトリのビュー設定、またはそのウィンドウの位置を格納する.DS_Store
ファイルと混同しないでください。)
Dotbar ._
ファイルの問題は、元のファイルと同じ拡張子を持つターゲットファイルシステム内の実際の通常のファイルであるため、さまざまな方法で大混乱を引き起こしていることです。たとえば、AntとMavenは._MyClass.Java
をコンパイルする別のJavaファイルとして認識します。
OS XはリソースフォークをSMB named Streams に保存するように構成でき、Sambaは 名前付きストリームをPOSIX拡張属性 に保存するか、または 別の場所にあるデポディレクトリ に保存します。
どちらのソリューションでも、ターゲットファイルシステムを汚染するドットバーファイルの問題は解決しますが、どちらも機能しません。
Xattr
最初にxattrを試しました:
vfs objects = streams_xattr
kernel oplocks = no
後者のオプションは、 このバグ が原因です。マウントする前に、共有のルートでこれを行うことにより、OS Xに使用するように指示しました。
touch .com.Apple.smb.streams.on
しかし、Finderでファイルをコピーしようとすると、次のエラーが発生しました。
「hello.Java」の一部のデータを読み書きできないため、Finderは操作を完了できません。
(エラーコード-36)
デポ
次に、デポで試しました:
vfs objects = streams_depot
.com.Apple.smb.streams.on
を共有のルートに残します。 Finderで同じファイルをコピーしようとすると、別のエラーが発生しました。
予期しないエラーが発生したため、操作を完了できません
(エラーコード-50)
OS Xをこれら2つのオプションのいずれかで動作させるにはどうすればよいですか?私の目的は、これらの厄介な._
を共有ディレクトリから取り除くことです。
私は単にドットバーファイルを拒否してみました:
veto files = /._*/
delete veto files = yes
ただし、これにより、一部のアプリケーションが失敗します。たとえば、 MercurialをOS XからマウントされたSMB share を介して実行した場合)。
OS X 10.9.5をクライアントとして使用しています。サーバーとしてDebian WheezyのSamba 3.6.6。
編集:要求に応じてここに私の構成です:
[global]
security = user
invalid users = root
workgroup = COMPANY_NAME
encrypt passwords = true
panic action = /usr/share/samba/panic-action %d
syslog = yes
syslog only = yes
# PERFORMANCE TUNING
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE
read raw = true
write raw = true
use sendfile = true
min receivefile size = 16384
aio read size = 16384
aio write size = 16384
max xmit = 131072
getwd cache = true
# DEFAULT OPTIONS FOR ALL SHARES
writeable = true
force group = company_group
create mask = 664
security mask = 664
force create mode = 664
force security mode = 664
directory mask = 2775
directory security mask = 2775
force directory mode = 2775
force directory security mode = 2775
# solve problem where OS X clients remove mode 0100
map archive = no
[homes]
browseable = no
かもしれませんvfs_streams_xattr VFSモジュールとスタックされた新しい vfs_fruit モジュールでこれを行うことができるようです。
たとえば、 this mailing list thread を参照してください。拡張属性をサポートする基礎となるファイルシステムが必要であり、それらを有効にしてマウントする必要があります。
ただし、 Samba wiki によると、これはSamba 4.2の新機能なので、アップグレードする必要があります。 (現時点では、Debian Sid [実験的]でさえ4.2はまだありません。)
Debianパッケージを捨ててSambaの新しいバージョンを構築する(またはJessieにアップグレードして4.2がjessie-backportsに表示されるのを待つ)ことに興味がない場合は、 クライアントからドットファイルを非表示にすることができます。
たとえば、同じディレクトリを指す2つの異なる共有があり、そのうちの1つは._filesを非表示にするなどです。おそらく最適ではありませんが、実行可能かもしれません。
Macのネイティブ設定でそれが可能かどうかはわかりませんが、 Asepsis のようなツールを使用してその問題を解決できます。すべてのMacのドロップを独自のフォルダに移動します。