OS Xリソースフォークを、ドットバーファイルよりも* else *どこでもSamba共有に保存できますか?


15

OS Xリソースフォークは、通常のファイルに添付されるデータの代替ストリームです。ファイルのカスタムアイコン、色付きラベル、キーワード、またはユーザーまたはアプリケーションによって設定されたその他のメタデータを含めることができます。

OS XのHFS +ファイルシステムでネイティブにサポートされていますが、ローカル(FAT32)またはリモート(NFS、SMB)にかかわらず、OS Xが別のファイルシステムをマウントすると、いわゆる「ドットバー」ファイルに保存されます:通常のファイルのリソースフォークname.extは別の通常の隠しファイルに保存されます._name.ext。(.DS_Storeアイコンビューと列ビューなどのディレクトリのビュー設定、またはウィンドウの位置を保存するファイルと混同しないでください。)

ドットバー._ファイルの問題は、元のファイルと同じ拡張子を持つターゲットファイルシステム内の実際の通常のファイルであるため、さまざまな方法で大混乱を招くことです。たとえば、AntとMavenは._MyClass.java、さらに別のJavaファイルをコンパイルする必要があります。

OS XはSMBの名前付きストリームにリソースフォークを格納するように構成でき、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)

 
これら2つのオプションのいずれかでOS Xを機能させるにはどうすればよいですか?私の目的は、これらの厄介なものを._共有ディレクトリから取り除くことです。

私は単純にドットバーファイルを拒否しようとしました:

veto files = /._*/
delete veto files = yes

ただし、これにより、一部のアプリケーションが失敗します。たとえば、マウントされたSMB共有を介してOS Xから実行されるMercurialなどです。

クライアントとして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

unix extensionsディレクティブを[global]セッションに変更して、問題が解決するかどうかを確認しましたか?testparmコマンドからの出力で質問を更新できますか?
fgbreel

@fgbreel質問に構成を追加しました。UNIX拡張機能はデフォルトで有効になっているため、変更しませんでした(シンボリックリンクなどをマッピングする必要があります)。無効にする必要があると思いますか?
トビア

はい、意味がわからない:(
fgbreel

回答:


2

これは、vfs_streams_xattr VFSモジュールとスタックされた新しいvfs_fruitモジュールでこれを行うことできるようです。

たとえば、このメーリングリストのスレッドを参照してください。拡張属性をサポートする基礎となるファイルシステムが必要であり、それらを有効にしてマウントする必要があります。

ただしSamba wikiによると、これはSamba 4.2の新機能であるため、アップグレードする必要があります。(現時点では、Debian Sid [実験的]でも4.2はまだありません。)

Debianパッケージを捨ててSambaの新しいバージョンを構築する(またはJessieにアップグレードしてjessie-backportsに4.2が表示されるのを待つ)ことに興味がない場合は、クライアントからドットファイルを非表示にできます。

同じディレクトリを指す2つの異なる共有を持つことができます。たとえば、1つは._filesを隠します。おそらく最適ではありませんが、実行可能かもしれません。


0

Macのネイティブ設定でそれが可能かどうかはわかりませんが、Aepsisのようなツールを使用してその問題を解決できます。すべてのMacドロップを独自のフォルダーに移動します。


前回チェックしたとき、Asepsisは.DS_Storeファイルを削除するだけ._*で、ネットワーク共有で最も問題を引き起こす「ドットバー」ファイルは削除しません
Tobia

@トビア:あなたは良い点を上げます。その場合、BlueHarvestも見つけましたが、無料ではありません。BlueHarvestはリアルタイムモニタリングを使用しているように見えますが、Aepsisisは受動的なリダイレクトを使用しています(システムファイルにパッチを適用する)。
ブレイクジョンソン

ありがとう。しかし、Samba側での解決策を待ちます。これは設定の問題だと考えているからです。
トビア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.