Bisakah saya menyimpan fork sumber daya OS X di share Samba di mana saja * selain * dalam file dotbar?

15

Garpu sumber daya OS X adalah aliran alternatif data yang dilampirkan ke file biasa. Mereka mungkin berisi ikon kustom file, label berwarna, kata kunci, atau metadata lain yang ditetapkan oleh pengguna atau oleh aplikasi.

Mereka secara asli didukung oleh sistem file HFS + OS X, tetapi setiap kali OS X memasang sistem file lain, baik lokal (FAT32) atau jarak jauh (NFS, SMB) mereka disimpan dalam apa yang disebut file "dotbar": garpu sumber daya untuk file biasa name.extadalah disimpan dalam file biasa tetapi tersembunyi lainnya ._name.ext. (Mereka tidak harus bingung dengan .DS_Storefile, yang menyimpan pengaturan tampilan direktori, seperti tampilan ikon vs kolom, atau posisi jendelanya.)

Masalah dengan ._file dotbar adalah file biasa yang sebenarnya, dalam sistem file target, dengan ekstensi yang sama dengan file asli, oleh karena itu mendatangkan malapetaka dalam beberapa cara. Misalnya, Ant dan Maven akan melihat ._MyClass.javafile Java lain untuk dikompilasi.

Saya melihat bahwa OS X dapat dikonfigurasi untuk menyimpan garpu sumber daya di SMB bernama stream dan bahwa Samba dapat dikonfigurasi untuk menyimpan stream bernama dalam atribut diperluas POSIX atau, sebagai alternatif, dalam direktori depot di tempat lain .

Kedua solusi akan menyelesaikan masalah file dotbar yang mencemari sistem file target, tetapi saya tidak bisa menjalankannya.

 
Xattr

Pertama saya mencoba dengan xattr:

vfs objects = streams_xattr
kernel oplocks = no

Opsi terakhir adalah karena bug ini . Saya mengatakan kepada OS X untuk menggunakannya, dengan melakukan ini di root share, sebelum memasangnya:

touch .com.apple.smb.streams.on

Tetapi ketika saya mencoba menyalin file dengan Finder, saya mendapatkan kesalahan ini:

Finder tidak dapat menyelesaikan operasi karena beberapa data di "hello.java" tidak dapat dibaca atau ditulis.
(Kode kesalahan -36)

 
Depot

Kemudian saya mencoba dengan depot:

vfs objects = streams_depot

meninggalkan .com.apple.smb.streams.ondi root bagian. Mencoba menyalin file yang sama dengan Finder, saya mendapat kesalahan lain:

Operasi tidak dapat diselesaikan karena terjadi kesalahan tak terduga
(kode kesalahan -50)

 
Bagaimana saya bisa membuat OS X berfungsi dengan salah satu dari dua opsi ini? Tujuan saya adalah untuk mengeluarkan orang-orang jahat ._dari direktori bersama.

Saya mencoba memveto file dotbar:

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

Tetapi itu menyebabkan beberapa aplikasi gagal, misalnya Mercurial ketika dijalankan dari OS X melalui share SMB yang terpasang .

Saya menggunakan OS X 10.9.5 sebagai klien; Samba 3.6.6 dari Debian Wheezy sebagai server.

Sunting: inilah konfigurasi saya seperti yang diminta:

[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
Tobia
sumber
Apakah Anda mencoba mengubah unix extensionsarahan menjadi [global]sesi untuk melihat apakah menyelesaikan kasus Anda? Bisakah Anda memperbarui pertanyaan Anda dengan output dari testparmperintah?
fgbreel
@ fgbreel Menambahkan konfigurasi ke pertanyaan saya. Saya belum mencoba mengubah ekstensi unix, karena diaktifkan secara default (dan saya perlu memetakan tautan simbolis dan yang lainnya.) Apakah Anda pikir saya harus menonaktifkannya?
Tobia
Ya, jangan masuk akal :(
fgbreel

Jawaban:

2

Sepertinya Anda mungkin dapat melakukan ini dengan modul vfs_fruit baru , ditumpuk dengan modul VFS vfs_streams_xattr .

Lihat, misalnya, utas milis ini . Anda memerlukan sistem file yang mendasarinya yang mendukung atribut yang diperluas, dan Anda harus membuatnya terpasang dengan mereka diaktifkan.

Namun , menurut wiki Samba , ini adalah fitur baru di Samba 4.2, jadi Anda harus memutakhirkan. (Sampai sekarang, bahkan Debian Sid [percobaan] belum memiliki 4.2.)

Jika Anda tidak tertarik untuk membuang paket Debian dan membuat versi baru Samba (atau memutakhirkan ke Jessie dan menunggu 4.2 muncul di jessie-backports), Anda dapat menyembunyikan file dot dari klien.

Anda bisa memiliki dua bagian berbeda yang menunjuk ke direktori yang sama, salah satunya menyembunyikan ._files, misalnya. Mungkin tidak optimal, tetapi mungkin bisa diterapkan.

Keith
sumber
0

Saya tidak tahu apakah itu mungkin dengan preferensi Mac asli, tetapi Anda dapat menggunakan alat seperti Asepsis untuk membantu dengan masalah itu. Ini akan memindahkan semua kotoran Mac ke folder mereka sendiri.

Blake Johnson
sumber
Terakhir kali saya memeriksa, Asepsis hanya menghapus .DS_Storefile, bukan file "dotbar" ._*yang menyebabkan masalah terbanyak dalam jaringan berbagi
Tobia
@Tobia: Anda meningkatkan poin yang bagus. Dalam hal itu, saya menemukan BlueHarvest juga, tetapi itu tidak gratis. Sepertinya BlueHarvest menggunakan pemantauan waktu nyata sedangkan Asepsis menggunakan pengarahan balik pasif (melalui menambal file sistem).
Blake Johnson
Terima kasih. Tapi saya akan menunggu solusi di sisi Samba, karena saya percaya itu hanya masalah konfigurasi.
Tobia