Tôi có thể lưu trữ các tài nguyên OS X trong Samba chia sẻ ở bất cứ đâu * khác * ngoài các tệp dotbar không?


15

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.extlà đượ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_Storecá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.javanhư 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.ontrong 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

Bạn đã cố gắng thay đổi unix extensionschỉ 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ừ testparmlệnh?
fgenameel 18/03/2015

@fgenameel Thêm cấu hình cho câu hỏi của tôi. Tôi đã không thử thay đổi các tiện ích mở rộng unix, bởi vì nó được bật theo mặc định (và tôi cần phải ánh xạ các liên kết và công cụ tượng trưng.) Bạn có nghĩ rằng tôi nên tắt nó không?
Tobia

Có, đừng có ý nghĩa :(
fgbreel 19/03/2015

Câu trả lời:


2

Có vẻ như bạn thể làm điều này với mô-đun vfs_fruit mới , được xếp chồng lên với mô-đun VFS vfs_streams_xattr .

Xem, ví dụ, chủ đề danh sách gửi thư này . Bạn cần một hệ thống tập tin cơ bản hỗ trợ các thuộc tính mở rộng và bạn phải kích hoạt nó với chúng.

Tuy nhiên , theo wiki Samba , đây là một tính năng mới trong Samba 4.2, vì vậy bạn sẽ cần nâng cấp. (Tính đến thời điểm hiện tại, ngay cả Debian Sid [thử nghiệm] cũng chưa có 4.2.)

Nếu bạn không quan tâm đến việc bỏ gói Debian và xây dựng một phiên bản Samba mới (hoặc nâng cấp lên Jessie và chờ 4.2 để hiển thị trong jessie-backports), bạn có thể ẩn các tệp chấm từ máy khách.

Bạn có thể có hai chia sẻ khác nhau trỏ đến cùng một thư mục, một trong số đó ẩn ._files chẳng hạn. Có lẽ không tối ưu, nhưng có thể khả thi.


0

Tôi không biết nếu có thể với các tùy chọn Mac gốc, nhưng bạn có thể sử dụng một công cụ như Asepsis để hỗ trợ vấn đề đó. Nó sẽ di chuyển tất cả các phân số Mac vào các thư mục riêng của chúng.


Lần trước tôi đã kiểm tra, Asepsis chỉ xóa .DS_Storecác tệp chứ không phải các ._*tệp "dotbar" gây ra nhiều vấn đề nhất trong chia sẻ mạng
Tobia

@Tobia: Bạn nêu lên một điểm tốt. Trong trường hợp đó, tôi cũng tìm thấy BlueHarvest , nhưng nó không miễn phí. Có vẻ như BlueHarvest sử dụng giám sát thời gian thực trong khi Asepsis sử dụng hướng tái tạo thụ động (thông qua việc vá một tệp hệ thống).
Blake Johnson

Cảm ơn. Nhưng tôi sẽ chờ đợi một giải pháp về phía Samba, vì tôi tin rằng đó chỉ là vấn đề cấu hình.
Tobia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.