Вилки ресурсів OS X - це альтернативні потоки даних, приєднані до звичайних файлів. Вони можуть містити спеціальну піктограму файлу, кольорову мітку, ключові слова чи будь-які інші метадані, встановлені користувачем або програмами.
Вони в основному підтримуються файловою системою HFS + OS X X OS OS X, але щоразу, коли OS X монтує іншу файлову систему, локальну (FAT32) або віддалену (NFS, SMB), вони зберігаються у так званих "точкових" файлах: форка ресурсу для звичайного файлу 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, я отримав цю помилку:
Finder не може завершити операцію, оскільки деякі дані в "hello.java" не можуть бути прочитані або записані.
(Код помилки -36)
Депо
Потім я спробував з депо:
vfs objects = streams_depot
залишаючи .com.apple.smb.streams.on
в корені частку. Намагаючись скопіювати той самий файл із Finder, я отримав ще одну помилку:
Операцію неможливо завершити, оскільки сталася несподівана помилка
(код помилки -50)
Як змусити OS X працювати з будь-яким із цих двох варіантів? Моя мета - вивести тих неприємних ._
людей із спільних каталогів.
Я спробував просто ветувати дотбарні файли:
veto files = /._*/
delete veto files = yes
Але це призводить до виходу з ладу деяких додатків, наприклад, Mercurial під час запуску з OS X над змонтованою часткою SMB .
Я використовую OS X 10.9.5 в якості клієнта; Samba 3.6.6 від Debian Wheezy як сервера.
Редагувати: ось моя конфігурація за запитом:
[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
команди?