Puis-je stocker des fourches de ressources OS X dans un partage Samba n'importe où * ailleurs * que dans des fichiers dotbar?

15

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.extest 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.javaencore 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
Tobia
la source
Avez-vous essayé de changer la unix extensionsdirective dans la [global]session pour voir si cela résout votre cas? Pouvez-vous mettre à jour votre question avec la sortie de la testparmcommande?
fgbreel
@fgbreel Ajout d'une configuration à ma question. Je n'ai pas essayé de changer les extensions Unix, car elles sont activées par défaut (et j'ai en quelque sorte besoin de mapper les liens symboliques et tout ça.) Pensez-vous que je devrais le désactiver?
Tobia
Oui, ça n'a pas de sens :(
fgbreel

Réponses:

2

Il semble que vous puissiez le faire avec le nouveau module vfs_fruit , empilé avec le module VFS vfs_streams_xattr .

Voir, par exemple, ce fil de liste de diffusion . Vous avez besoin d'un système de fichiers sous-jacent qui prend en charge les attributs étendus et vous devez le faire monter avec eux activés.

Cependant , selon le wiki Samba , il s'agit d'une nouvelle fonctionnalité de Samba 4.2, vous devrez donc effectuer une mise à niveau. (Pour l'instant, même Debian Sid [expérimental] n'a pas encore 4.2.)

Si vous n'êtes pas intéressé à abandonner le paquet Debian et à construire une nouvelle version de Samba (ou à mettre à niveau vers Jessie et à attendre que 4.2 apparaisse dans jessie-backports), vous pouvez masquer les fichiers de points aux clients.

Vous pouvez avoir deux partages différents qui pointent vers le même répertoire, dont l'un cache les fichiers ._file, par exemple. Peut-être pas optimal, mais pourrait être réalisable.

Keith
la source
0

Je ne sais pas si c'est possible avec les préférences natives de Mac, mais vous pouvez utiliser un outil comme Asepsis pour résoudre ce problème. Il déplacera toutes les excréments Mac vers leurs propres dossiers.

Blake Johnson
la source
La dernière fois que j'ai vérifié, Asepsis ne supprime que les .DS_Storefichiers, pas les fichiers "dotbar" ._*qui causent le plus de problèmes dans les partages réseau
Tobia
@Tobia: Vous soulevez un bon point. Dans ce cas, j'ai également trouvé BlueHarvest , mais ce n'est pas gratuit. On dirait que BlueHarvest utilise une surveillance en temps réel tandis qu'Asepsis utilise une réorientation passive (via le patch d'un fichier système).
Blake Johnson
Merci. Mais j'attendrai une solution côté Samba, car je pense que c'est juste une question de configuration.
Tobia