Pregunta ¿Puedo almacenar las bifurcaciones de recursos de OS X en un recurso compartido de Samba en cualquier otro lugar que en los archivos dotbar?


Las horquillas de recursos de OS X son flujos alternativos de datos adjuntos a archivos normales. Pueden contener el icono personalizado del archivo, la etiqueta de color, las 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 Se almacena en otro archivo regular pero oculto ._name.ext. (No deben confundirse con .DS_Store archivos, que almacenan la configuración de la vista de un directorio, como la vista del ícono frente a la columna, o la posición de su ventana.)

El problema con dotbar ._ los archivos es que son archivos normales reales, en el sistema de archivos de destino, con la misma extensión que el archivo original, por lo que causan estragos en varias formas. Por ejemplo, Ant y Maven verán ._MyClass.java como otro archivo de Java para compilar.

veo que OS X se puede configurar para almacenar forks de recursos en secuencias denominadas SMB y que Samba se puede configurar para almacenar secuencias nombradas en POSIX atributos extendidos o alternativamente, en un directorio de depósito en otro lugar.

Ambas soluciones resolverían el problema de los archivos dotbar que contaminan el sistema de archivos de destino, pero tampoco puedo hacer que 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 de nuevo 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

Entonces lo intenté con el depósito:

vfs objects = streams_depot

dejando .com.apple.smb.streams.on En la raíz de la acción. Tratando de copiar el mismo archivo con Finder, recibí otro error:

La operación no se puede completar porque ocurrió 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 conseguir esos desagradables. ._ fuera de los directorios compartidos.

Intenté simplemente vetar archivos dotbar:

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 el cliente; Samba 3.6.6 de Debian Wheezy como el servidor.

Edición: 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

14
2018-03-04 11:48


origen


¿Intentaste cambiar el unix extensions directiva en el [global] Sesión para ver si resuelve tu caso? ¿Puedes actualizar tu pregunta con el resultado de testparm ¿mando? - fgbreel
@fgbreel Agregado configuración a mi pregunta. No he intentado cambiar las extensiones de Unix, porque está habilitada de forma predeterminada (y necesito mapear enlaces simbólicos y esas cosas). ¿Crees que debería deshabilitarlo? - Tobia
Sí, no tiene sentido :( - fgbreel


Respuestas:


Se parece a ti podría ser capaz de hacer esto con el nuevo vfs_fruit módulo, apilado con el vfs_streams_xattr Módulo VFS.

Ver, por ejemplo, este hilo de la lista de correo. Necesita un sistema de archivos subyacente que admita atributos extendidos, y debe tenerlo montado con ellos habilitados.

sin embargo, de acuerdo con la Wiki de samba, esta es una nueva característica en Samba 4.2, por lo que necesitarás actualizar. (Hasta el momento, incluso Debian Sid [experimental] aún no tiene 4.2).

Si no está interesado en deshacerse del paquete Debian y en crear una nueva versión de Samba (o actualizar a Jessie y esperar a que aparezca 4.2 en jessie-backports), puede Ocultar archivos de puntos de los clientes.

Podría tener dos recursos compartidos diferentes que apuntan al mismo directorio, uno de los cuales oculta los archivos ._, por ejemplo. Quizás no sea óptimo, pero podría ser viable.


2
2017-09-30 16:44





No sé si es posible con las preferencias nativas de Mac, pero puedes usar una herramienta como Asepsia para ayudar con ese problema Moverá todos los excrementos de Mac a sus propias carpetas.


0
2018-04-27 18:18



La última vez que lo comprobé, Asepsis solo elimina .DS_Store archivos, no la "barra de puntos" ._* Archivos que causan la mayoría de los problemas en las redes compartidas. - Tobia
@Tobia: Levantas un buen punto. En ese caso, encontré Cosecha azul También, pero no es gratis. Parece que BlueHarvest usa monitoreo en tiempo real, mientras que Asepsis usa reorientación pasiva (a través de parchear un archivo del sistema). - Blake Johnson
Gracias. Pero esperaré una solución en el lado de Samba, ya que creo que es solo una cuestión de configuración. - Tobia