Назад | Перейти на главную страницу

Могу ли я хранить вилки ресурсов OS X в общей папке Samba где угодно * еще *, кроме файлов с точкой?

Вилки ресурсов 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 в их собственные папки.