Widelce zasobów OS X to alternatywne strumienie danych dołączone do zwykłych plików. Mogą zawierać niestandardową ikonę pliku, kolorową etykietę, słowa kluczowe lub dowolne inne metadane ustawione przez użytkownika lub aplikacje.
Są one natywnie obsługiwane przez system plików HFS + OS X, ale ilekroć system OS X podłącza inny system plików, zarówno lokalny (FAT32), jak i zdalny (NFS, SMB), są one przechowywane w tak zwanych plikach „kropkowych”: rozwidlenie zasobów dla zwykłego pliku name.ext
to przechowywane w innym zwykłym, ale ukrytym pliku ._name.ext
. (Nie należy ich mylić z .DS_Store
plikami, które przechowują ustawienia widoku katalogu, takie jak widok ikona vs. kolumna lub położenie okna).
Problem z ._
plikami dotbar polega na tym, że są to zwykłe pliki w docelowym systemie plików, z takim samym rozszerzeniem jak plik oryginalny, dlatego sieją spustoszenie na wiele sposobów. Na przykład Ant i Maven zobaczą ._MyClass.java
kolejny plik Java do skompilowania.
Widzę, że OS X można skonfigurować do przechowywania widelców zasobów w nazwanych strumieniach SMB i że Samba można skonfigurować do przechowywania nazwanych strumieni w rozszerzonych atrybutach POSIX lub, alternatywnie, w katalogu magazynu gdzie indziej .
Oba rozwiązania rozwiązałyby problem zanieczyszczenia plików docelowych przez docelowy system plików, ale ja też nie mogę pracować.
Xattr
Najpierw próbowałem z xattr:
vfs objects = streams_xattr
kernel oplocks = no
Ta ostatnia opcja wynika z tego błędu . Powiedziałem OS X, aby go użył, robiąc to w katalogu głównym udziału, przed zamontowaniem:
touch .com.apple.smb.streams.on
Ale kiedy próbowałem skopiować plik za pomocą Findera, otrzymałem ten błąd:
Finder nie może ukończyć operacji, ponieważ niektórych danych w „hello.java” nie można odczytać ani zapisać.
(Kod błędu -36)
Magazyn
Potem spróbowałem z depot:
vfs objects = streams_depot
pozostawiając .com.apple.smb.streams.on
w katalogu głównym udziału. Próbując skopiować ten sam plik za pomocą Findera, otrzymałem kolejny błąd:
Nie można zakończyć operacji, ponieważ wystąpił nieoczekiwany błąd
(kod błędu -50)
Jak sprawić, by OS X działał z jedną z tych dwóch opcji? Moim celem jest ._
usunięcie tych paskudnych ze wspólnych katalogów.
Próbowałem po prostu zawetować pliki z kropkami:
veto files = /._*/
delete veto files = yes
Ale powoduje to awarię niektórych aplikacji, na przykład Mercurial po uruchomieniu z OS X na zamontowanym udziale SMB .
Używam OS X 10.9.5 jako klienta; Samba 3.6.6 z Debian Wheezy jako serwer.
Edycja: oto moja konfiguracja zgodnie z żądaniem:
[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
dyrektywę w[global]
sesję, aby sprawdzić, czy to rozwiązuje twoją sprawę? Czy możesz zaktualizować swoje pytanie o dane wyjściowetestparm
polecenia?