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.ext
adalah disimpan dalam file biasa tetapi tersembunyi lainnya ._name.ext
. (Mereka tidak harus bingung dengan .DS_Store
file, 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.java
file 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.on
di 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
unix extensions
arahan menjadi[global]
sesi untuk melihat apakah menyelesaikan kasus Anda? Bisakah Anda memperbarui pertanyaan Anda dengan output daritestparm
perintah?Jawaban:
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.
sumber
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.
sumber
.DS_Store
file, bukan file "dotbar"._*
yang menyebabkan masalah terbanyak dalam jaringan berbagi