Một tên Samba thân thiện với con người


11

Hầu hết các máy tính của chúng tôi chạy Ubuntu, nhưng hai trong số chúng khởi động kép vào Windows và khi chúng tôi có khách, chúng thường chạy máy tính Windows. Do đó, ngoài việc sử dụng NFS, máy chủ tệp của chúng tôi (máy chủ Ubuntu) cũng chạy Samba.

Và vì chúng tôi chủ yếu sử dụng Ubuntu, chúng tôi muốn tận dụng các lợi thế của nó so với Windows, chẳng hạn như có thể sử dụng các ký tự \:*?"<>|trong tên tệp. Tất nhiên, vấn đề là Windows không chấp nhận các ký tự đó trong tên tệp và vì vậy Samba phải dịch tên tệp thành một thứ dễ chấp nhận hơn. Cách nó làm điều này, tuy nhiên, tôi thấy là đáng ghét.

Tên tập tin Episode 182 - Exorcist 2: The Heretic.mp4ví dụ biến thành E4Q82R~Y.MP4. Đây là một "sự điều chỉnh" khủng khiếp. Có cách nào để khiến Samba trở nên thân thiện hơn với con người không? Có thể "sửa" nó thành một cái gì đó giống như Episode 182 - Exorcist 2_ The Heretic.mp4thay vào đó, nơi các nhân vật bất hợp pháp được thay thế đơn giản?


1
Kiểm tra mô tả của bản vá này trong Danh sách gửi thư Samba . Phương pháp được mô tả là hoạt động vượt trội với Samba 4.1.4-Debian.
mpy

@mpy Tôi đã thử điều này nhưng nó vẫn không hoạt động với tôi khi tôi sao chép các tệp có ký tự cửa sổ bất hợp pháp vào chia sẻ samba của tôi. Nó hoạt động để chỉ chuyển đổi những thứ sẽ ổn (như không gian được chuyển đổi thành biểu tượng), nhưng không phải cho những thứ không hoạt động (như ':' được chuyển đổi thành biểu tượng khác). Bất kỳ con trỏ?
pd12

Câu trả lời:


11

mangled map hiện không được chấp nhận và sẽ không còn hoạt động trong các phiên bản mới của Samba.

Bạn có thể sử dụng vfs_catia để giải quyết vấn đề. Thêm các dòng sau vào smb.conf:

vfs objects = catia
catia:mappings = 0x003a:0x2236,0x003f:0x0294,0x002a:0x2217,0x003c:0x276e,0x003e:0x276f,0x0022:0x02ba,0x007c:0x2223,0x005c:0x29f9

Ánh xạ được chỉ định với các mã ký tự thập lục phân có tiền tố 0x được phân tách bằng dấu hai chấm. Ánh xạ được cung cấp sẽ ánh xạ lại các ký tự không hợp lệ thành các giao diện unicode không có khả năng được sử dụng trong bất kỳ ngôn ngữ nào.

:? * <> "| \
∶ ʔ ∗ ❯ ʺ ∣ ⧹

Mã có thể được đặt dưới [global]hoặc trong một [share]phần riêng lẻ . Đặt nó vào [global]có thể ảnh hưởng đến hiệu suất.

Lưu ý rằng bất kỳ ký tự nào bạn ánh xạ tới không thể được sử dụng trong tên tệp trên máy chủ hoặc chúng sẽ không thể truy cập được.

Ví dụ: Một máy khách windows truy cập một tệp có tên file❮name.txttrên máy chủ sẽ yêu cầu file<name.txttừ máy chủ do ánh xạ, điều này sẽ dẫn đến một lỗi không tìm thấy tệp.


Tôi đã thử điều này nhưng nó vẫn không hoạt động với tôi khi tôi sao chép các tệp có ký tự cửa sổ bất hợp pháp vào chia sẻ samba của tôi. Nó hoạt động để chỉ chuyển đổi những thứ sẽ ổn (như không gian được chuyển đổi thành biểu tượng), nhưng không phải cho những thứ không hoạt động (như ':' được chuyển đổi thành biểu tượng khác). Bất kỳ con trỏ?
pd12

2
Điều này làm việc tuyệt vời! Một điều cần lưu ý là bạn không thể ánh xạ mọi thứ vào cùng một ký tự và trong ví dụ của bạn, bất cứ thứ gì thực sự có dấu gạch dưới trong đó sẽ không thể truy cập được nữa. Thay vào đó tôi đã sử dụng các ánh xạ sau : 0x3a:0x7e 0x3f:0x5e, vì vậy :trở thành ~?trở thành ^.
Geoffrey

2

Trong liên kết này, bạn có thể thấy các tùy chọn xáo trộn. Tôi nghĩ trước tiên bạn nên vô hiệu hóa tùy chọn:

mangled names

Sau đó, tôi đoán tên sẽ trông tốt hơn ...

Để thay thế dấu hai chấm, ví dụ sử dụng dòng này:

mangled map =(: _)

Bạn có thể thêm nhiều quy tắc thay thế như thế này:

mangled map =(: _) (foo bar)

(cũng thay thế bất kỳ sự xuất hiện của foo bằng thanh)


Họ trông tốt hơn bây giờ. Trong thực tế, khi tôi đặt "tên xéo" thành "không", tên tệp hiển thị trong Windows hoàn toàn không thay đổi. Mặc dù điều này chắc chắn trông tốt hơn, nhưng nó cũng làm cho các ứng dụng Windows không thể mở các tệp. Nếu tôi cố mở một tệp tes:t.txttrong Notepad, ví dụ: tôi được thông báo "Không thể tìm thấy tệp [...] \ tes: t.txt." Tương tự với các tệp "bất hợp pháp" khác trong các ứng dụng tương ứng của họ.
Alex

chỉnh sửa câu trả lời của tôi!
Michael K

mangled mapđã bị xóa khỏi Samba. Từ những gì tôi có thể nói sau khi nhìn xung quanh một chút, nó đã bị xóa cách đây nhiều năm. Đây là những gì log.smbdtập tin của tôi nói nếu tôi cố gắng sử dụng nó:Ignoring unknown parameter "mangled map"
Alex

Bạn đúng ... không tán thành. Nó sẽ không hoạt động. Nó không đơn giản - tên tệp phức tạp là để ngăn chặn việc có hai tệp có tên dame. Tệp foo: .txt và foo_.txt có thể tồn tại và sau đó việc đổi tên của bạn sẽ thất bại. Vì vậy, tốt nhất sẽ là thực thi các quy tắc tên tệp sao cho chỉ các tên được cho phép được cho phép trong cả hai hệ thống tệp.
Michael K
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.