Nautilus CLI 对于 SSHFS 挂载路径来说非常慢,但 GUI 却很快

Nautilus CLI 对于 SSHFS 挂载路径来说非常慢,但 GUI 却很快

我大部分导航都是在终端中进行的,但在某些情况下,在 GUI 中打开目录也很不错。在 Ubuntu Linux 上,默认文件浏览器是 nautilius。我的工作流程通常是:cd 进入终端上感兴趣的文件夹,然后运行nautilus .(或xdg-open .,实际上执行相同的操作),这会弹出一个查找器窗口。

虽然我的大部分工作都是在本地机器上进行的,但有时我需要在远程机器上浏览文件系统。这非常适合我的工作流程。我只需 sshfs 挂载远程机器,然后假装一切都在本地。

然而,我在这里遇到了一个问题。nautilus .在 sshfs 挂载目录中运行时速度非常慢。我意识到由于资源是非本地的,会有一些延迟,但我看到的减速远远超出了我的预期。

观察结果

为了演示这个问题,我使用 sshfs 挂载了一台距离我们约 20 英里的远程机器。当我进入挂载目录并运行:time nautilus .我得到了以下信息:

real    1m13.918s
user    0m0.045s
sys 0m0.133s

打开远程窗口需要 1 分钟以上。请注意,当我 ping 机器时,延迟时间大约40.5 ms为 64 字节。

此外,如果我首先打开本地 nautilus 窗口并将安装路径复制到导航栏中,它会加载得非常快。 不到 3 秒。

现在,应该注意的是,如果我使用 LAN 上的机器执行此操作并且 ping 值大约为 ,则不会出现这种缓慢现象0.618 msnautilus .在这台附近的远程机器上运行的是:

time nautilus .

real    0m1.454s
user    0m0.008s
sys 0m0.024s

但是,与我将 sshfs 挂载路径复制到 nautilus 导航栏所需的时间相比,这仍然有点慢。后者需要不到一秒钟的时间。

为了进行比较,当我nautilius .在本地运行时,结果几乎是即时的:

time nautilus .

real    0m0.082s
user    0m0.017s
sys 0m0.009s

概括

为了总结这些结果,这里有一个表格,列出了运行所需的时间 nautilus .、将 sshfs 挂载路径粘贴到 nautilus 导航栏的时间以及我的本地机器、LAN 上附近的机器和 WAN 上远处机器的 ping 时间。

距离 (‘时间’,‘鹦鹉螺’。) ('时间','导航栏') (‘时间’,‘ping’)
本地主机 0分0.082秒 <1秒 0.050 毫秒
局域网 0分1.454秒 <1秒 0.618 毫秒
广域网 1分13.918秒 <3秒 40.5 毫秒

在我看来,跑步nautilus .必须进行大量的往返才能按照我测量的方式进行扩展。

不幸的是,我无法为此提供 MWE,因为它需要外部硬件,但希望我的描述足够详细。

问题

我想知道是否有任何方法可以让我做得nautilus .更快,或者编写一些脚本,以便脚本快速打开本地 nautilus 窗口,然后使用宏将路径复制到导航栏中,这样我就可以获得手动方法的速度,而无需手动复制/粘贴序列。

我曾尝试通过此线程使用 dbus:https://unix.stackexchange.com/questions/364997/open-a-directory-in-the-default-file-manager-and-select-a-file 但我的运气不太好。

答案1

问题在于 Nautilus 无法检测到远程服务器上的内容。让我们让它更加小心,将所有东西都视为远程的:

  1. 打开 Nautilus 偏好设置

文件偏好设置

  1. 向下滚动到“性能”,并将所有内容设置为“从不”

性能设置

它确实“执行了大量的往返”。当您将 sshfs 路径粘贴到 Nautilus 的导航栏中时,Nautilus 会意识到它正在引用远程服务器。当您使用 时sshfs,它只会将另一个/proc/mounts条目添加为第三方 FUSE 文件系统,而 Nautilus 没有针对它的特殊情况。然后缩略图和文件夹计数需要读取每个文件并列出每个文件夹,这会尝试通过网络发送大量数据包。

相关内容