挂载远程文件夹的最佳方法

挂载远程文件夹的最佳方法

我有两个运行 debian wheezy 的 RasberryPi,我想将计算机 A 中的一个文件夹安装到计算机 B 上。

最好的(最有效的)方法是什么?

我可以通过SMB来做到这一点,但那是针对Windows的,我认为必须有更好的方法来跨Linux共享。

答案1

SSHFS 很棒。它可以将远程目录挂载到本地目录中保险丝。下面的命令用于#指示命令以 身份执行root,而$指示以普通用户身份执行。由于需要 FUSE 软件,因此首先确保它可用并正在运行。

lsmod下面的和命令之一grep 可以显示软件是否已加载并可供使用。任一命令的结果都表明该命令fuse可用。

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

如果这两个命令都没有结果,请尝试使用modprobe并再次检查来加载内核模块而不重新启动。

# modprobe fuse
# lsmod fuse

如果加载模块失败,请使用apt-get.

# apt-get install fuse

安装后再次检查。

# modprobe fuse
# lsmod fuse

在继续之前必须安装并运行 FUSE。


检查 的权限/dev/fuse。这些权限应为您的常规用户帐户提供读写访问权限。如果您确定您的普通用户帐户已经具有 的读写权限,请跳过此部分/dev/fuse

# ls -l /dev/fuse

输出可能类似于以下内容之一。

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)

2013 年,我的 Debian 创建了/dev/fuse权限0600、所有者root、组所有者fuse。我需要让保险丝组使用该设备并将我的常规用户帐户添加到组中,如下所示。

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

如果需要新的组成员身份,请注销并重新登录以成为该组的成员。


接下来,ssh按如下方式安装两侧。

# apt-get install ssh

这个答案是为 Debian 编写的,但至少在 Ubuntu 18.x 上,openssh-clientfuse和其他一些软件包是 Ubuntu 软件包的一部分sshfssshfs客户端需要该软件,但如果需要,也可以在两侧安装。软件包依赖项之一是fuse,但安装程序会跳过已安装的软件。

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

有了fusessh可用,并且有使用设备的权限,/dev/fuse,为远程文件系统创建挂载点;并且,按如下方式在本地安装该远程文件系统。

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

要挂载 home 以外的目录,请在冒号后指定。

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

要卸载,请使用fusermount.

fusermount -u /mnt/$directory_name

如果您有一台 Windows 计算机,它也可以使用 SSHFSwin-sshfs。该软件将与SSHFS“映射驱动器”,这样您就可以拥有包含远程目录的Windows驱动器号。

答案2

您可以使用很多东西,其中流行的选项是:

  • 网络文件系统
  • 桑巴/CIFS
  • SSHFS

为了易于设置,我认为它们必须按这个顺序排列(顶部:最简单)

SSHFS

通过 FUSE,您可以通过 ssh 挂载远程文件系统。我不会介绍如何进行,因为克里斯托弗已经很好地解释了这一点。请注意,为了自动挂载文件,需要一个多一点工作

桑巴舞

它将允许您使用 Windows 和 Unix 机器访问远程文件夹。如果这对你来说没什么大不了的,那么你可能不会从中受益。但是,在 init 上自动挂载它很容易(只需在 处输入适当的值/etc/fstab,包括username=<your-samba-username>,password=<your-samba-password>在选项列中。

网络文件系统

它将让您仅通过 IP 进行身份验证(没有用户名=更快,仅在您的内部使用非敌意的LAN)或通过 Kerberos Tickets(对于只有两个 Raspberry 来说太痛苦了;但在企业环境中很有用)。

由于它具有内核模式支持,因此它的运行速度比 sshfs 更快。此外,由于有未执行加密它将具有更好的吞吐量,对于微型 Raspberry ARM 来说,它可能会有所不同。

此外,只要您信任您的网络,设置起来就不那么痛苦了。您也有自动挂载支持/etc/fstab,并且不必输入敏感数据(例如用户名或密码),如果您的用户名已同步(相同/etc/passwd/etc/group文件),您可以使用常用的 POSIX 权限工具集(chownchgrpchmod)。

答案3

在linux中,你会选择网络文件系统(另请查看文章关于它的 archwiki 可能也有适用于您的发行版的信息)。它具有比 samba 更高级的功能。如果您需要锁定(即并发访问)文件,您还应该研究 lockd,因为 nfs 是无状态的。然而它比 smb 更难配置。我建议尝试 samba 和 nfs,看看哪一个适合您的需求。

答案4

我过去使用过 SFTP 网络驱动器和 ExpanDrive,我可以告诉你sshfs毫无疑问优于两者。

相关内容