Las bifurcaciones de recursos de OS X son flujos alternativos de datos adjuntos a archivos normales. Pueden contener el icono personalizado del archivo, etiqueta de color, palabras clave o cualquier otro metadato establecido por el usuario o por las aplicaciones.
Son compatibles de forma nativa con el sistema de archivos HFS + de OS X, pero cada vez que OS X monta otro sistema de archivos, ya sea local (FAT32) o remoto (NFS, SMB), se almacenan en los llamados archivos "dotbar": la bifurcación de recursos para el archivo normal name.ext
es almacenado en otro archivo regular pero oculto ._name.ext
. (No deben confundirse con los .DS_Store
archivos, que almacenan la configuración de vista de un directorio, como la vista de icono frente a columna o la posición de su ventana).
El problema con los ._
archivos dotbar es que son archivos regulares reales, en el sistema de archivos de destino, con la misma extensión que el archivo original, lo que causa estragos de varias maneras. Por ejemplo, Ant y Maven verán ._MyClass.java
como otro archivo Java para compilar.
Veo que OS X se puede configurar para almacenar bifurcaciones de recursos en secuencias con nombre SMB y que Samba se puede configurar para almacenar secuencias con nombre en atributos extendidos POSIX o, alternativamente, en un directorio de depósito en otro lugar .
Ambas soluciones resolverían el problema de los archivos de barra de puntos que contaminan el sistema de archivos de destino, pero no puedo hacer que ninguno funcione.
Xattr
Primero probé con xattr:
vfs objects = streams_xattr
kernel oplocks = no
La última opción se debe a este error . Le dije a OS X que lo usara, haciendo esto en la raíz del recurso compartido, antes de montarlo:
touch .com.apple.smb.streams.on
Pero cuando intenté copiar un archivo con Finder, recibí este error:
El Finder no puede completar la operación porque algunos datos en "hello.java" no se pueden leer ni escribir.
(Código de error -36)
deposito
Luego probé con depósito:
vfs objects = streams_depot
dejando .com.apple.smb.streams.on
en la raíz de la acción. Intentando copiar el mismo archivo con Finder, recibí otro error:
La operación no se puede completar porque se produjo un error inesperado
(código de error -50)
¿Cómo puedo hacer que OS X funcione con cualquiera de estas dos opciones? Mi propósito es sacar a esos desagradables ._
de los directorios compartidos.
Intenté simplemente vetar los archivos de barra de puntos:
veto files = /._*/
delete veto files = yes
Pero eso hace que algunas aplicaciones fallen, por ejemplo Mercurial cuando se ejecuta desde OS X sobre un recurso compartido SMB montado .
Estoy usando OS X 10.9.5 como cliente; Samba 3.6.6 de Debian Wheezy como el servidor.
Editar: aquí está mi configuración según lo solicitado:
[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
directiva en la[global]
sesión para ver si resuelve su caso? ¿Puedes actualizar tu pregunta con la salida deltestparm
comando?