Các nhánh tài nguyên OS X là các luồng dữ liệu thay thế được đính kèm vào các tệp thông thường. Chúng có thể chứa biểu tượng tùy chỉnh của tệp, nhãn màu, từ khóa hoặc bất kỳ siêu dữ liệu nào khác do người dùng hoặc ứng dụng đặt.
Chúng được hỗ trợ bởi hệ thống tệp HFS + của OS X, nhưng bất cứ khi nào OS X gắn kết hệ thống tệp khác, cho dù cục bộ (FAT32) hoặc từ xa (NFS, SMB), chúng đều được lưu trữ trong các tệp được gọi là "dotbar": ngã ba tài nguyên cho tệp thông thường name.ext
là được lưu trữ trong một tập tin thông thường nhưng ẩn ._name.ext
. (Không nên nhầm lẫn với .DS_Store
các tệp lưu trữ cài đặt chế độ xem của thư mục, chẳng hạn như biểu tượng so với chế độ xem cột hoặc vị trí của cửa sổ.)
Vấn đề với ._
các tệp dotbar là chúng là các tệp thông thường thực tế, trong hệ thống tệp đích, có cùng phần mở rộng với tệp gốc, do đó phá hoại một số cách. Ví dụ, Ant và Maven sẽ xem ._MyClass.java
như một tệp Java khác để biên dịch.
Tôi thấy rằng OS X có thể được cấu hình để lưu trữ các nhánh tài nguyên trong các luồng có tên SMB và Samba có thể được cấu hình để lưu trữ các luồng có tên trong các thuộc tính mở rộng POSIX hoặc, thay vào đó , trong một thư mục kho ở nơi khác .
Cả hai giải pháp sẽ giải quyết vấn đề về các tệp dotbar gây ô nhiễm hệ thống tệp đích, nhưng tôi không thể làm việc được.
Xattr
Đầu tiên tôi đã thử với xattr:
vfs objects = streams_xattr
kernel oplocks = no
Tùy chọn thứ hai là do lỗi này . Tôi đã nói với OS X sử dụng nó, bằng cách thực hiện điều này trong thư mục gốc của chia sẻ, trước khi cài đặt nó:
touch .com.apple.smb.streams.on
Nhưng khi tôi cố sao chép một tập tin bằng Finder, tôi đã gặp lỗi này:
Trình tìm kiếm không thể hoàn thành thao tác vì một số dữ liệu trong Tiếng hello.java không thể đọc hoặc ghi.
(Mã lỗi -36)
kho chứa
Sau đó, tôi đã thử với kho:
vfs objects = streams_depot
để lại .com.apple.smb.streams.on
trong thư mục gốc của chia sẻ. Cố gắng sao chép cùng một tệp với Finder, tôi gặp một lỗi khác:
Thao tác không thể hoàn tất vì đã xảy ra lỗi không mong muốn
(mã lỗi -50)
Làm cách nào để OS X hoạt động với một trong hai tùy chọn này? Mục đích của tôi là để có được những khó chịu ._
ra khỏi các thư mục được chia sẻ.
Tôi đã thử chỉ đơn giản là phủ quyết các tập tin dotbar:
veto files = /._*/
delete veto files = yes
Nhưng điều đó khiến một số ứng dụng bị lỗi, ví dụ Mercurial khi chạy từ OS X qua chia sẻ SMB được gắn kết .
Tôi đang sử dụng OS X 10.9.5 làm máy khách; Samba 3.6.6 từ Debian Wheezy làm máy chủ.
Chỉnh sửa: đây là cấu hình của tôi theo yêu cầu:
[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
chỉ thị vào[global]
phiên để xem liệu giải quyết trường hợp của bạn? Bạn có thể cập nhật câu hỏi của bạn với đầu ra từtestparm
lệnh?