Разветвления ресурсов OS X - это альтернативные потоки данных, прикрепленные к обычным файлам. Они могут содержать пользовательский значок файла, цветную метку, ключевые слова или любые другие метаданные, установленные пользователем или приложениями.
Они изначально поддерживается HFS + файловой системы OS X, но всякий раз , когда OS X подключает другую файловую систему, будь то локальная (FAT32) или удаленной (NFS, SMB) они хранятся в так называемых файлах «dotbar»: вилы ресурс для обычного файла name.ext
является хранится в другом обычном, но скрытом файле ._name.ext
. (Их не следует путать с .DS_Store
файлами, в которых хранятся параметры вида каталога, например значок или столбец, или положение его окна.)
Проблема с ._
файлами точечных панелей состоит в том, что они являются обычными обычными файлами в целевой файловой системе с тем же расширением, что и исходный файл, что приводит к хаосу несколькими способами. Например, Ant и Maven увидят ._MyClass.java
еще один Java-файл для компиляции.
Я вижу, что OS X может быть сконфигурирован для хранения вилок ресурсов в именованных потоках SMB, и что Samba может быть сконфигурирован для хранения именованных потоков в расширенных атрибутах POSIX или, в качестве альтернативы, в каталоге хранилища где-то еще .
Оба решения позволят решить проблему с точечными файлами, загрязняющими целевую файловую систему, но я не могу заставить их работать.
некоторый атрибут
Сначала я попробовал с 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
команды?