Cách tốt nhất để gắn thư mục từ xa


40

Tôi có hai RasberryPi đang chạy debian wheezy và tôi muốn gắn một thư mục từ máy tính A trên máy tính B.

Cách tốt nhất (như hiệu quả nhất) để làm điều này là gì?

Tôi có thể làm điều đó thông qua SMB, nhưng đó là cho windows, tôi nghĩ rằng phải có một cách tốt hơn để chia sẻ trên linux.


Câu trả lời:


31

Bạn có thể sử dụng nhiều thứ, trong số đó, các tùy chọn phổ biến là:

  • NFS
  • Samba / CIFS
  • SSHFS

Bằng cách dễ dàng thiết lập, tôi nghĩ rằng họ sẽ phải được sắp xếp theo thứ tự này (hàng đầu: dễ nhất)

SSHFS

Thông qua FUSE, bạn có thể gắn hệ thống tập tin từ xa thông qua ssh. Tôi sẽ không bao gồm làm thế nào, vì Cristopher đã giải thích rất rõ điều đó. Chỉ cần lưu ý rằng, để gắn kết tệp tự động, nó sẽ cần thêm một chút công việc .

Samba

Nó sẽ cho phép bạn sử dụng các máy Windows và Unix để truy cập vào thư mục từ xa. Nếu nó không phải là một vấn đề lớn đối với bạn, thì có lẽ bạn sẽ không được hưởng lợi từ nó. Tuy nhiên, thật dễ dàng để tự động hóa nó trên init (chỉ cần nhập các giá trị phù hợp tại /etc/fstab, bao gồm username=<your-samba-username>,password=<your-samba-password>trong cột tùy chọn.

NFS

Nó sẽ cho phép bạn xác thực chỉ qua IP (không có tên người dùng = nhanh hơn, chỉ sử dụng trong mạng LAN không thù địch của bạn ) hoặc qua Vé Kerberos (quá đau cho chỉ hai Raspberries; nhưng hữu ích trong môi trường công ty).

Vì nó có hỗ trợ chế độ kernel, nó sẽ chạy nhanh hơn sshfs. Ngoài ra, vì không có mã hóa được thực hiện, nó sẽ có thông lượng tốt hơn và trong trường hợp Raspberry ARM nhỏ, nó có thể tạo ra sự khác biệt.

Bên cạnh đó, không quá khó để thiết lập chỉ đơn giản là bạn tin tưởng vào mạng của mình. Bạn có ủng hộ automount trong /etc/fstabquá, và bạn không cần phải đưa dữ liệu nhạy cảm (như tên người dùng hoặc mật khẩu), và nếu bạn có tên người dùng của bạn syncrhronized (giống /etc/passwd/etc/groupfile), bạn có thể sử dụng các điều khoản POSIX thông thường bộ công cụ ( chown, chgrpchmod).


Tôi sử dụng Pi của mình như một máy chủ NFS với các đĩa có hầu hết các phim của tôi và các phương tiện khác (nghĩa là không phải là nội dung quan trọng của hệ thống, không phải '/ home /' hoặc bất cứ thứ gì tương tự). NFS cho phép tôi xem phim mà không cần phải sao chép nó vào ổ đĩa cục bộ, nhưng khi ghi tệp vào đĩa NFS, tôi thích sử dụng rsync hơn. Do đó, tôi đã gắn các đĩa NFS của mình một cách sẵn sàng và ghi nội dung qua SSH (với rsync). Điều này cũng ngăn tôi vô tình rsyncing vào một đĩa gắn NFS (rất không hiệu quả).
zrajm

@zrajm làm thế nào để bạn gắn đĩa của bạn trên pi?
FutuToad

arisu:/mnt/ytra /mnt/ytra nfs soft,ro,intr 0 2
zrajm

Samba có thể nhầm lẫn một số ứng dụng unix, đáng chú ý là về quyền hoặc những gì stat()trả về, ví dụ: những thứ dựa vào nlinksố lượng mà CIFS không có khái niệm. SSHFS Tôi không ấn tượng lắm, vì nó chạy các công tắc ngữ cảnh trên máy chủ tệp lên rất cao và không hỗ trợ khóa cần thiết theo yêu cầu của các chương trình nội bộ. Vì vậy, NFS ...
thrig

38

SSHFS là tuyệt vời. Nó có thể gắn các thư mục từ xa trong một thư mục cục bộ với FUSE . Các lệnh bên dưới sử dụng #để chỉ ra rằng một lệnh đã được thực thi root, trong khi $chỉ ra thực thi như một người dùng thông thường. Vì phần mềm FUSE là bắt buộc, trước tiên hãy đảm bảo rằng nó có sẵn và đang chạy.

Một trong những lệnh lsmodgrepbên dưới, có thể tiết lộ nếu phần mềm được tải và sẵn sàng để sử dụng. Một kết quả từ một trong hai lệnh chỉ ra rằng fusecó sẵn.

# lsmod | grep fuse
$ grep -i fuse /lib/modules/$(uname -r)/modules.builtin

Nếu không có kết quả từ một trong hai lệnh, hãy thử tải mô-đun hạt nhân mà không cần khởi động lại bằng cách sử dụng modprobevà kiểm tra lại.

# modprobe fuse
# lsmod fuse

Nếu tải mô-đun không thành công, hãy cài đặt phần mềm với apt-get.

# apt-get install fuse

Kiểm tra lại sau khi cài đặt.

# modprobe fuse
# lsmod fuse

FUSE phải được cài đặt và chạy trước khi tiếp tục.


Kiểm tra các quyền của /dev/fuse. Các quyền sẽ cung cấp cho tài khoản người dùng thông thường của bạn quyền truy cập đọc và ghi. Bỏ qua phần này nếu bạn đã xác định rằng tài khoản người dùng thông thường của bạn đã có quyền đọc và ghi /dev/fuse.

# ls -l /dev/fuse

Đầu ra có thể là một cái gì đó giống như một trong những điều sau đây.

crw-rw-rw- 1 root root (all users can read/write)
crw------- 1 root fuse (only root can read/write)
crw-rw---- 1 root fuse (root and members of fuse group can read/write)

Vào năm 2013, Debian của tôi được tạo /dev/fusevới 0600quyền, chủ sở hữu root, chủ sở hữu nhóm fuse. Tôi cần phải để nhóm cầu chì sử dụng thiết bị và thêm tài khoản người dùng thông thường của mình vào nhóm, như được hiển thị bên dưới.

# usermod -aG fuse $your_regular_user_account
# chmod 0660 /dev/fuse

Nếu thành viên nhóm mới là bắt buộc, hãy đăng xuất và đăng nhập lại để trở thành thành viên của nhóm.


Tiếp theo, cài đặt sshtrên cả hai mặt như sau.

# apt-get install ssh

Câu trả lời này đã được viết dành cho Debian, nhưng trên Ubuntu 18.x ít nhất, openssh-client, fuse, và một vài gói khác là một phần của Ubuntu sshfsgói. Phần sshfsmềm được yêu cầu ở phía máy khách, nhưng nó có thể được cài đặt ở cả hai phía nếu muốn. Một trong những phụ thuộc gói là fuse, nhưng trình cài đặt bỏ qua phần mềm đã được cài đặt.

# Ubuntu 18.x: 
# apt-get install sshfs

Với fusesshcó sẵn, và với sự cho phép sử dụng thiết bị, /dev/fusehãy tạo một điểm gắn kết cho hệ thống tệp từ xa; và, gắn kết hệ thống tập tin từ xa đó cục bộ như sau.

# mkdir /mnt/$directory_name
# chown $your_user:$group /mnt/$directory_name/
$ sshfs $remote_username@$remote_server_name: /mnt/$directory_name/

Để gắn một thư mục khác ngoài nhà, chỉ định nó sau dấu hai chấm.

$ sshfs $remote_username@$remote_server_name:/remote/directory /mnt/$directory_name

Để ngắt kết nối, sử dụng fusermount.

fusermount -u /mnt/$directory_name

Nếu bạn có máy Windows, nó cũng có thể sử dụng SSHFS với win-sshfs . Phần mềm này sẽ "ánh xạ ổ đĩa" với SSHFS, để bạn có thể có một ký tự ổ đĩa Windows có chứa thư mục từ xa.


1
Bạn có thể cải thiện đáng kể tốc độ hiệu suất của SSHFS bằng cách sử dụng các tùy chọn bổ sung. Xem bài viết này để biết thêm thông tin và so sánh tốc độ với NFS: admin-magazine.com/HPC/Articles/Shared-Data-with-SSHFS
Blendenzo

Xin chào - Tôi đã cố sử dụng hướng dẫn của bạn (điều chỉnh theo yum install fuse-sshfs.x86_64) nhưng khi tôi làm modprobe fuseđiều đó không tạo ra một nhóm cầu chì cho tôi. Vì vậy, khi tôi đã làm usermod -a -G fuse [your-user], tôi đã nhận được usermod: group 'fuse' does not exist. bạn có thể giúp gì không cảm ơn trước
lưỡng cư

lsmod | grep fusekhông trả về kết quả và tôi có /dev/fuse, m được sở hữu bởi root. Vì vậy, bạn đang nói rằng tôi ổn mà không có nhóm?
lưỡng cư

vâng, tôi nhận đượccrw-rw-rw-. 1 root root 10, 229 Nov 21 15:32 /dev/fuse
lưỡng cư

Sau khi # apt-get install fuse-utils sshfs tôi nhận được "Không thể định vị gói fuse-utils". Bất cứ ý tưởng tại sao? (Ubuntu 18.04.01)
Kvothe

7

Trong linux, bạn sẽ chọn NFS (cũng xem bài viết trên archwiki về nó có thể có thông tin áp dụng cho bản phân phối của bạn). Nó có nhiều tính năng nâng cao hơn samba. Nếu bạn cần khóa các tệp (tức là acces đồng thời), bạn nên xem xét lockd aswell vì nfs là trạng thái không trạng thái. Tuy nhiên, nó khó cấu hình hơn smb. Tôi sẽ đề nghị thử cả samba và nfs để xem cái nào phù hợp với nhu cầu của bạn.


1

Tôi đã sử dụng cả ổ đĩa mạng SFTP và ExpanDrive trong quá khứ và tôi có thể nói với bạn rằng sshfs vượt trội hơn cả mà không có câu hỏi.

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.