LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 595|回复: 2

用SSHFS快速实现文件“原位”共享

[复制链接]
发表于 2011-12-23 05:10:20 | 显示全部楼层 |阅读模式
前两天看到有帖子提到用折腾SAMBA共享的时候使用远程文件总是先缓存到本地临时目录,不能直接“原位”共享。我试了一下,直接在dolphin里输入形如smb://xxx.xxx.xxx.xxx的地址就会导致先在本地缓存。我猜是不是KDE直接把smb,sftp之类的协议统一当成简单的文件传输协议处理了。直接把smb共享的文件mount成本地文件系统就可以了。

当然SAMBA的配置感觉还是很繁琐,samba本身有一套用户,系统又有一套用户,我是经常记不住怎么正确配置。所以我研究了一下,发现如果你在服务器上有用户的话并且可以用ssh链接的话,可以直接用sshfs快速共享文件。这只需要在客户端安装sshfs(SUSE默认没有装这个包),服务器端不用做任何配置。然后输入以下命令
  1. sshfs -o idmap=user $USER@$REMOTE_HOST:$SHARED_PATH $LOCAL_PATH
复制代码
本地程序就访问mount到$LOCAL_PATH的远程文件了,而且是“原位”的访问,不需要任何本地缓冲(因为整个网络对于KDE/GNOME来说都是透明的)。
要注意的是你需要确保当前账户对$LOCAL_PATH有读写权限,挂载也远程文件的时候也要用当前账户(而不是root账户)来挂载。——因为用root用户挂载的话,本地也只有root用户能读写远程文件。
最后,当你不再需要访问远程文件时,用如下命令卸载即可:
  1. fusermount -u $LOCAL_PATH
复制代码
如果提示device is busy,用
  1. lsof $LOCAL_PATH
复制代码
可以看到哪些程序正在使用这些文件。关闭之后应该就可以顺利卸载了。
发表于 2011-12-26 11:47:39 | 显示全部楼层
谢谢 我想起来曾经有一个bug说是为什么smb下看电影要全缓存的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-28 03:26:33 | 显示全部楼层
我觉得那个可能不是bug,没有mount成本地文件系统大概就是那个样子的。
另外opensuse的sshd默认配置是不保持客户端一直链接的,所以在客户端需要在~/.ssh/config里加上如下命令
  1. ServerAliveInterval 120
复制代码

整个解决方案参考了ubuntu社区文档:
https://help.ubuntu.com/community/SSHFS
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表