SSHFS 似乎可以工作,但 Sublime + SSHFS 却不能?

SSHFS 似乎可以工作,但 Sublime + SSHFS 却不能?

我使用以下命令通过 SSHFS 挂载远程文件系统:

$ sshfs -o uid=1000 -o gid=1000 [email protected]:/ "/home/chendy/my_mount"

一切似乎都很愉快,除非我尝试使用 Sublime 打开并保存文件......

查看和重命名文件?是的:

...我可以在文件资源管理器中查看我的文件,并且可以使用文件资源管理器成功重命名文件。

权限/用户/组?是的

...检查权限时,一切似乎都按顺序进行:

$ ls -l '/home/chendy/my_mount/home/kano/test.py'
-rwxrwxrwx 1 chendy chendy 927 Apr 15 16:24

使用 VIM 编辑文件?是的

...我也可以用VIM打开文件并保存。

使用 Sublime 编辑文件?错误

...但是当我通过文件资源管理器加载文件或使用命令行在 Sublime (Sublime Text 3 Build 3059) 中打开文件时:

 $ /opt/sublime_text/sublime_text '/home/chendy/my_mount/home/kano/test.py'

我犯了同样的错误:

无法保存 ~/my_mount/home/kano/test.py 错误:重命名(/home/chendy/my_mount/home/kano/.subl979.tmp,/home/chendy/my_mount/home/kano/test.py)失败: 不允许操作

这是怎么回事?有什么办法解决吗?

答案1

与许多编辑器一样,Sublime 保存到临时文件,然后将该临时文件移动到位。这样做是为了防止系统在保存过程中崩溃:保证原始文件或新版本都会存在,您不会有丢失文件的风险。

SSHFS 构建在 SFTP 之上,SFTP(至少由 OpenSSH 实现)不允许重命名文件并自动覆盖目标。 (这一点在SSHFS常见问题解答.)

您可以通过告诉 SSHFS 允许重命名和覆盖,但使操作成为非原子操作来解决此限制(因此,在很短的时间内删除旧文件,但新文件仍具有其临时名称)。对于某些用例来说这是一个问题,但在仅编辑文件时则不是。

将选项添加-o workaround=renamesshfs命令行中。

答案2

简短的回答,在您的配置中设置此设置:

"atomic_save": false

它将避免通过不支持的 sshfs (SFTP) 进行重命名。

相关内容