SSHFS 在加载文件时是否将文件存储在本地机器上?

SSHFS 在加载文件时是否将文件存储在本地机器上?

我的公司想使用 SSHFS 从安全的远程服务器挂载目录。本地(客户端)计算机上的应用程序需要访问文件以读取和编辑其内容(读/写)。但是,我们的业务要求我们永远不要将文件本地存储在客户端计算机上。我们搜索了 SSHFS 文档,但无法弄清楚:当应用程序访问远程文件时,该文件是否本地存储在硬盘上的某个位置?如果是这样,当应用程序访问这些文件时,它们会驻留在哪里?

答案1

SSHFS充当 SFTP 协议的客户端,支持部分文件操作。也就是说,客户端不需要检索整个文件(如 FTP 那样)——例如,如果应用程序发出 seek(1024) 后跟 read(256),则SSHFS仅需要检索请求的 256 个字节。

所有这些都意味着文件不需要存储在本地任何地方(除非应用程序本身已将其数据读入内存)。sshfs 客户端可以在完成操作后立即丢弃操作结果。

类似地,如果您sftp://在 GNOME 应用程序中打开 URL,该应用程序使用“GVFS”SFTP 客户端,该客户端还支持在应用程序和服务器之间直接传递单个操作,因此它根本不必在本地缓存文件。


但请注意,并非所有 SFTP 客户端都可以这样工作。例如,KDE Dolphin 还sftp://通过 KIO 客户端支持 URL,直到上个月没有支持部分操作——它总是将整个文件下载到某个位置,~/.cache/然后再将其提供给应用程序。(据我所知,这个问题最终在最新版本中随着 kio-fuse 的添加而得到解决。)

/tmp文本编辑器内置的 SFTP 客户端也倾向于使用本地副本,例如 Vim 的 netrw每次都会下载文件并将其上传回来。

相关内容