Вилки ресурсов OS X - это альтернативные потоки данных, прикрепленные к обычным файлам. Они могут содержать настраиваемый значок файла, цветную метку, ключевые слова или любые другие метаданные, установленные пользователем или приложениями.
Они изначально поддерживаются файловой системой HFS + OS X, но всякий раз, когда OS X монтирует другую файловую систему, локальную (FAT32) или удаленную (NFS, SMB), они сохраняются в так называемых файлах «точечной диаграммы»: вилке ресурсов для обычного файла. name.ext
хранится в другом обычном, но скрытом файле ._name.ext
. (Их не следует путать с .DS_Store
файлы, в которых хранятся настройки представления каталога, такие как представление значков и столбцов или положение его окна.)
Проблема с панелью точек ._
files заключается в том, что они являются обычными файлами в целевой файловой системе с тем же расширением, что и исходный файл, поэтому наносят ущерб множеством способов. Например, 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
Похоже ты мощь уметь делать это с новым vfs_fruit модуль, укомплектованный vfs_streams_xattr Модуль VFS.
См., Например, эта ветка списка рассылки. Вам нужна базовая файловая система, поддерживающая расширенные атрибуты, и вы должны смонтировать ее с включенными ими.
тем не мение, согласно Самба вики, это новая функция в Samba 4.2, поэтому вам нужно будет обновить ее. (На данный момент даже у Debian Sid [экспериментального] нет версии 4.2.)
Если вы не заинтересованы в отказе от пакета Debian и создании новой версии Samba (или обновлении до Jessie и ожидании появления 4.2 в jessie-backports), вы можете скрыть точечные файлы от клиентов.
У вас может быть два разных общих ресурса, которые указывают на один и тот же каталог, например, один из которых скрывает ._files. Возможно, не оптимально, но может работать.
Я не знаю, возможно ли это с собственными настройками Mac, но вы можете использовать такой инструмент, как Асептика чтобы помочь с этой проблемой. Он переместит все пометы Mac в их собственные папки.