web-dev-qa-db-ja.com

OS XリソースフォークをSamba共有に、ドットバーファイル以外の場所*どこでも*格納できますか?

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
15
Tobia

かもしれません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を非表示にするなどです。おそらく最適ではありませんが、実行可能かもしれません。

2
Keith

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

0
Blake Johnson