Woo*_*low 6 filesystems fstab sshfs
我有一个每天使用的远程 sshfs 驱动器。我以前每次启动计算机时都执行以下命令。
sshfs -o Ciphers=arcfour -o Compression=no -o reconnect remote:dev ~/dev
Run Code Online (Sandbox Code Playgroud)
显然,每次都手动执行此操作并不是很方便,所以我想我只需将遥控器添加到我的文件系统表中即可。我不熟悉 fstab 的格式,但在阅读了一些技术“操作方法”博客后,我决定在我的/etc/fstab
文件中包含以下行。
sshfs#wbarlow@remote:/home/wbarlow/dev /home/wbarlow/dev fuse defaults,users,idmap=user 0 0
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果网络中出现故障,驱动器有时会出现故障。这种情况可能每天发生一次——当我尝试手动重新连接(通过单击 nautilus 中的驱动器)时,我收到一条消息,显示“传输端点未连接。”。
我的主要问题是:如何将-o reconnect
我在终端命令中使用的选项带入我的 fstab 文件?我相信这会防止驱动器因闪烁而断开连接。
此外,我选择该密码是因为它是我的远程服务器支持的最快的密码(我认为),并删除了压缩,因为有线千兆网络比 CPU 压缩内容所花费的时间快。如果我也可以将这些选项拉入我的 fstab 中,那就太好了,但我可以没有它们。
这是我的内核/操作系统/架构信息:
[wbarlow ~]$ uname -r
4.1.3-200.fc22.x86_64
Run Code Online (Sandbox Code Playgroud)
要包含您想要的选项,您应该修改您的 fstab 条目,如下所示。请小心,因为添加一个实际上并不存在的选项会导致您的系统无法启动。
sshfs#wbarlow@remote:/home/wbarlow/dev /home/wbarlow/dev fuse defaults,users,noauto,idmap=user,Ciphers=arcfour,Compression=no,reconnect 0 0
Run Code Online (Sandbox Code Playgroud)
我测试了
ps|grep ssh
kill ssh
并没有杀死坐骑。我冒昧地添加了该noauto
选项。这要求挂载不会自动发生,因此任何失败都不会停止启动过程(尤其是在使用 systemd 时)。它依赖于你有一种方便的跑步方式mount
。希望你的文件管理器能提供这个,否则它就失去了意义......
另一种可能性是nofail
选项。即使此文件系统无法挂载“如果此设备不存在”,此选项也会请求成功启动。不幸的是,我们发现 sshfs/fuse 没有实现这个选项。具有讽刺意味的是,使用nofail
此处的选项将保证失败。
文档 ( man fstab
) 描述了 fstab 条目的第四个字段:
第四个字段(fs_mntops)
此字段描述与文件系统关联的挂载选项。
它被格式化为逗号分隔的选项列表。它至少包含挂载类型(ro 或 rw),以及适合文件系统类型的任何附加选项(包括性能调整选项)。有关详细信息,请参阅 mount(8) 或 swapon(8)。
与文件系统无关的基本选项是:
- defaults使用默认选项:rw、suid、dev、exec、auto、nouser 和 async。
- noauto在给出“mount -a”时不挂载(例如,在启动时)。
- user允许用户挂载。
- owner允许设备所有者挂载。
- 注释或x-<name>供 fstab 维护程序使用。
- 如果此设备不存在,则nofail不会报告此设备的错误。
完全独立于文件系统的选项由 fstab 处理。其他选项传递给特定于文件系统的命令(在本例中为 sshfs)。