Чи можу я зберігати вилки ресурсів OS X у спільному доступі Samba де-небудь ще *, ніж у файлах dotbar?


15

Вилки ресурсів 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команди?
fgbreel

@fgbreel Додано конфігурацію до мого питання. Я не намагався змінити розширення unix, тому що це включено за замовчуванням (і мені начебто потрібно відображати символічні посилання та ін.) Як ви вважаєте, я повинен це відключити?
Тобія

Так, не має сенсу :(
fgbreel

Відповіді:


2

Схоже, ви могли б зробити це за допомогою нового модуля vfs_fruit , складеного модулем VFS vfs_streams_xattr .

Дивіться, наприклад, цей потік списку розсилки . Вам потрібна базова файлова система, яка підтримує розширені атрибути, і ви повинні встановити їх, щоб вони були включені.

Однак , згідно з вікі Samba , це нова функція Samba 4.2, тому вам потрібно буде оновити. (На даний момент навіть у Debian Sid [експериментальний] ще немає 4.2.)

Якщо вам не цікаво скинути пакет Debian і створити нову версію Samba (або перейти на Джессі і чекати, коли 4.2 з'явиться на джессі), ви можете приховати точкові файли від клієнтів.

У вас можуть бути дві різні спільні ділянки, які вказують на один і той же каталог, один з яких приховує, наприклад, файли ._files. Можливо, це не оптимально, але може бути працездатним.


0

Я не знаю, чи можливо це за допомогою рідних налаштувань Mac, але ви можете використовувати такий інструмент, як Asepsis щоб допомогти у вирішенні цієї проблеми. Він перемістить усі відмітки Mac у власні папки.


Востаннє я перевіряв, що Asepsis видаляє лише .DS_Storeфайли, а не файли "dotbar", ._*які спричиняють найбільшу кількість проблем у мережевих акціях
Tobia

@Tobia: Ви піднімаєте хорошу точку. У цьому випадку я знайшов і BlueHarvest , але це не безкоштовно. Схоже, BlueHarvest використовує моніторинг у режимі реального часу, тоді як Asepsis використовує пасивне перенаправлення (через виправлення системного файлу).
Блейк Джонсон

Спасибі. Але я буду чекати рішення на стороні Самба, оскільки я вважаю, що це лише питання конфігурації.
Тобія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.