OS X-Resource-Forks sind alternative Datenströme, die an reguläre Dateien angehängt werden. Sie können das benutzerdefinierte Symbol, die farbige Beschriftung, Schlüsselwörter oder andere vom Benutzer oder von Anwendungen festgelegte Metadaten der Datei enthalten.
Sie werden nativ vom HFS + -Dateisystem von OS X unterstützt, aber wenn OS X ein anderes Dateisystem bereitstellt, egal ob lokal (FAT32) oder remote (NFS, SMB), werden sie in sogenannten "Dotbar" -Dateien gespeichert: der Resource Fork für die reguläre Datei name.ext
ist in einer anderen regulären, aber versteckten Datei gespeichert ._name.ext
. (Sie dürfen nicht mit .DS_Store
Dateien verwechselt werden, in denen die Ansichtseinstellungen eines Verzeichnisses gespeichert sind, z. B. Symbol- oder Spaltenansicht oder die Position seines Fensters.)
Das Problem bei Dotbar- ._
Dateien besteht darin, dass es sich im Zieldateisystem tatsächlich um reguläre Dateien handelt, die dieselbe Erweiterung wie die Originaldatei haben und daher in vielerlei Hinsicht Chaos anrichten. Beispielsweise sehen Ant und Maven eine ._MyClass.java
weitere zu kompilierende Java-Datei.
Ich sehe, dass OS X so konfiguriert werden kann, dass Resource Forks in benannten SMB-Streams gespeichert werden, und dass Samba so konfiguriert werden kann, dass benannte Streams in erweiterten POSIX-Attributen oder alternativ in einem Depotverzeichnis an einer anderen Stelle gespeichert werden .
Beide Lösungen würden das Problem der Dotbar-Dateien lösen, die das Zieldateisystem verschmutzen, aber ich kann auch nicht zum Laufen bringen.
Xattr
Zuerst habe ich es mit xattr versucht:
vfs objects = streams_xattr
kernel oplocks = no
Die letztere Option ist auf diesen Fehler zurückzuführen . Ich habe OS X angewiesen, es zu verwenden, indem ich es im Stammverzeichnis der Freigabe ausführte, bevor ich es bereitstellte:
touch .com.apple.smb.streams.on
Aber als ich versuchte, eine Datei mit Finder zu kopieren, kam folgende Fehlermeldung:
Der Finder kann den Vorgang nicht abschließen, da einige Daten in "hello.java" nicht gelesen oder geschrieben werden können.
(Fehlercode -36)
Depot
Dann habe ich es mit depot versucht:
vfs objects = streams_depot
Verlassen .com.apple.smb.streams.on
in der Wurzel der Aktie. Beim Versuch, dieselbe Datei mit Finder zu kopieren, ist ein weiterer Fehler aufgetreten:
Der Vorgang kann nicht abgeschlossen werden, da ein unerwarteter Fehler aufgetreten ist
(Fehlercode -50).
Wie kann ich OS X mit einer dieser beiden Optionen zum Laufen bringen? Mein Ziel ist es, diese bösen ._
aus den freigegebenen Verzeichnissen herauszuholen.
Ich habe versucht, Dotbar-Dateien einfach mit einem Veto zu belegen:
veto files = /._*/
delete veto files = yes
Dies führt jedoch dazu, dass einige Anwendungen fehlschlagen, beispielsweise Mercurial, wenn OS X über eine gemountete SMB-Freigabe ausgeführt wird .
Ich verwende OS X 10.9.5 als Client. Samba 3.6.6 von Debian Wheezy als Server.
Bearbeiten: hier ist meine Konfiguration wie gewünscht:
[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
Direktive in die[global]
Sitzung zu ändern, um zu sehen, ob Ihr Fall gelöst wird? Können Sie Ihre Frage mit demtestparm
Befehl output from aktualisieren ?