Les fourches de ressources OS X sont des flux de données alternatifs joints à des fichiers normaux. Ils peuvent contenir l'icône personnalisée du fichier, une étiquette colorée, des mots-clés ou toute autre métadonnée définie par l'utilisateur ou par les applications.
Ils sont nativement pris en charge par le système de fichiers HFS + d'OS X, mais chaque fois qu'OS X monte un autre système de fichiers, qu'il soit local (FAT32) ou distant (NFS, SMB), ils sont stockés dans des fichiers dits "dotbar": la fourchette de ressources pour le fichier normal name.ext
est stocké dans un autre fichier régulier mais caché ._name.ext
. (Ils ne doivent pas être confondus avec.DS_Store
fichiers, qui stockent les paramètres d'affichage d'un répertoire, tels que l'icône par rapport à l'affichage des colonnes, ou la position de sa fenêtre.)
Le problème avec dotbar ._
fichiers est qu'ils sont de vrais fichiers normaux, dans le système de fichiers cible, avec la même extension que le fichier d'origine, causant ainsi des ravages de plusieurs façons. Par exemple, Ant et Maven verront ._MyClass.java
encore un autre fichier Java à compiler.
Je vois que OS X peut être configuré pour stocker des fourchettes de ressources dans des flux nommés SMB et que Samba peut être configuré pour stocker des flux nommés dans des attributs étendus POSIX ou, alternativement, dans un répertoire de dépôt ailleurs .
Les deux solutions résoudraient le problème des fichiers dotbar polluant le système de fichiers cible, mais je ne peux pas faire fonctionner les deux.
Xattr
J'ai d'abord essayé avec xattr:
vfs objects = streams_xattr
kernel oplocks = no
Cette dernière option est due à ce bogue . J'ai dit à OS X de l'utiliser, en faisant cela à la racine du partage, avant de le monter:
touch .com.apple.smb.streams.on
Mais quand j'ai essayé de copier un fichier avec Finder, j'ai eu cette erreur:
Le Finder ne peut pas terminer l'opération car certaines données de «hello.java» ne peuvent pas être lues ou écrites.
(Code d'erreur -36)
Dépôt
Ensuite, j'ai essayé avec dépôt:
vfs objects = streams_depot
laissant .com.apple.smb.streams.on
à la racine de la part. En essayant de copier le même fichier avec le Finder, j'ai une autre erreur:
L'opération ne peut pas être terminée car une erreur inattendue s'est produite
(code d'erreur -50)
Comment puis-je faire fonctionner OS X avec l'une de ces deux options? Mon but est de retirer ces méchants ._
des répertoires partagés.
J'ai essayé simplement de veto sur les fichiers dotbar:
veto files = /._*/
delete veto files = yes
Mais cela entraîne l'échec de certaines applications, par exemple Mercurial lorsqu'elles sont exécutées à partir d'OS X sur un partage SMB monté .
J'utilise OS X 10.9.5 comme client; Samba 3.6.6 de Debian Wheezy comme serveur.
Edit: voici ma configuration comme demandé:
[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
directive dans la[global]
session pour voir si cela résout votre cas? Pouvez-vous mettre à jour votre question avec la sortie de latestparm
commande?