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

cjb*_*kha 50 filesystems remote mount

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

什么是最好的(最有效的)方法来做到这一点?

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

Chr*_*her 40

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

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

# lsmod | grep fuse
$ grep -i fuse /lib/modules/$(uname -r)/modules.builtin
Run Code Online (Sandbox Code Playgroud)

如果任一命令都没有结果,请尝试在不重新启动的情况下加载内核模块modprobe并再次检查。

# modprobe fuse
# lsmod fuse
Run Code Online (Sandbox Code Playgroud)

如果加载模块失败,请安装软件apt-get

# apt-get install fuse
Run Code Online (Sandbox Code Playgroud)

安装后再次检查。

# modprobe fuse
# lsmod fuse
Run Code Online (Sandbox Code Playgroud)

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


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

# ls -l /dev/fuse
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)

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

# usermod -aG fuse $your_regular_user_account
# chmod 0660 /dev/fuse
Run Code Online (Sandbox Code Playgroud)

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


接下来,ssh在两侧安装如下。

# apt-get install ssh
Run Code Online (Sandbox Code Playgroud)

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

# Ubuntu 18.x: 
# apt-get install sshfs
Run Code Online (Sandbox Code Playgroud)

fusessh可用的,以及与使用该设备的许可,/dev/fuse创建一个安装点为远程文件系统; 并且,按如下方式在本地挂载该远程文件系统。

# mkdir /mnt/$directory_name
# chown $your_user:$group /mnt/$directory_name/
$ sshfs $remote_username@$remote_server_name: /mnt/$directory_name/
Run Code Online (Sandbox Code Playgroud)

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

$ sshfs $remote_username@$remote_server_name:/remote/directory /mnt/$directory_name
Run Code Online (Sandbox Code Playgroud)

要卸载,请使用fusermount.

fusermount -u /mnt/$directory_name
Run Code Online (Sandbox Code Playgroud)

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

  • 您可以通过使用其他选项显着提高 SSHFS 的性能速度。有关更多信息以及与 NFS 的速度比较,请参阅本文:http://www.admin-magazine.com/HPC/Articles/Sharing-Data-with-SSHFS (2认同)

小智 33

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

  • NFS
  • 桑巴/CIFS
  • SSHFS

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

SSHFS

通过 FUSE,您可以通过 ssh 挂载远程文件系统。我不会介绍如何做,因为 Cristopher 已经很好地解释了这一点。请注意,为了自动挂载文件,需要做更多的工作

桑巴舞

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

NFS

它将让您仅通过 IP(没有用户名 = 更快,仅在您的非恶意LAN 中使用)或通过 Kerberos 票证(仅对两个 Raspberry 来说太痛苦;但在公司环境中有用)进行身份验证。

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

此外,简单地设置您信任您的网络并没有那么痛苦。您也有自动挂载支持/etc/fstab,并且您不必放置敏感数据(例如用户名或密码),并且如果您的用户名同步(相同/etc/passwd/etc/group文件),您可以使用通常的 POSIX 权限工具集(chown,chgrpchmod)。


Sil*_*ker 7

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