科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Debian下通过SSHFS/SHFS挂载远程文件 (3)

Debian下通过SSHFS/SHFS挂载远程文件 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

大家可能知道并用过在linux上通过smb,nfs来进行远程文件系统的共享,可是大家是否知道我们现在还可以通过ssh来进行远程文件系统的共享。

作者:fengniao 来源:赛迪网技术社区 2007年10月17日

关键字: 操作系统 Linux 挂载 Debian

  • 评论
  • 分享微博
  • 分享邮件

好了,接下来到/etc目录下来创建一个sshfstab,这个文件功能跟fstab类似,不过这里面只包含需要开机是挂载的sshfs文件系统,而不包括其他文件系统的信息。我们还是以上面的例子来创建这个文件:

# /etc/sshfstab: SSH file system information.
#
# <[user@]host:[dir]> 
root@192.168.1.1:/ /mnt/remotehost sshfs_sync 
default_permissions,allow_other,allow_root,
kernel_cache,hard_remove

这个文件中要挂载的系统可以包含多行,其中挂载点必须保证已经创建,上面的启动脚本中不包含创建挂载点这步。

好了现在可以用:

# /etc/init.d/mountsshfs

来挂载所有的sshfs远程文件系统了。然后用:

# /etc/init.d/umountsshfs

可以卸载所有已挂载的sshfs远程文件系统。现在我们要把它添加到启动里面去。在/etc/rc0.d,/etc/rc6.d中分别创建一个指向/etc/init.d/umountsshfs的软连接,注意软连接的名字关系到执行顺序。

# cd /etc/rc0.d
# ln -s ../init.d/umountsshfs S15umountsshfs
# cd /etc/rc6.d
# ln -s ../init.d/umountsshfs S15umountsshfs

在/etc/rc2.d,/etc/rc3.d,/etc/rc4.d,/etc/rc5.d中分别创建一个指向/etc/init.d/mountsshfs的软连接,注意软连接的名字关系到执行顺序。

# cd /etc/rc2.d
# ln -s ../init.d/mountsshfs S85mountsshfs
# cd /etc/rc3.d
# ln -s ../init.d/mountsshfs S85mountsshfs
# cd /etc/rc4.d
# ln -s ../init.d/mountsshfs S85mountsshfs
# cd /etc/rc5.d
# ln -s ../init.d/mountsshfs S85mountsshfs

好了。现在重新启动机器就可以了发现远程文件系统现在已经成了你的“本地”文件系统了!

二、通过shfs挂载远程主机文件系统

前面介绍的那种方法虽然可以在开机自动挂载,关机和重启可以自动卸载sshfs文件系统了,但是它不能用mount来直接指定-t参数来挂载,因此也不能直接加到/etc/fstab种,而且用df也不能列出那样的分区,所以你可能希望如果能像挂载普通分区那样挂载sshfs文件系统就好了。这也不是不可能的,下面介绍的这种方法就可以满足我们这个愿望,它是通过内核的shfs模块来实现的,它支持2.4.10以上和2.6的内核。这种方式我认为是最方便的。下面我们就看看怎么来使用它。

首先你要保证你的系统已经安装了shfs模块,如果你是默认的debian内核,它是没有这个模块的,但是不用着急,我们可以跟上面编译fuse模块那样去编译这个shfs模块,方法类似。因此下面只列出命令,不再详细解释了。

# apt-get install shfs-source shfs-utils debconf-utils 
debhelper dpatch gettext html2text intltool-debian 
po-debconf kernel-package module-assistant

# export KVERS=$(uname -r)

# export KSRC=/usr/src/kernel-headers-$KVERS

# apt-get install kernel-headers-$KVERS

# cd /usr/src

# tar jxvf shfs.tar.jz

# cd /usr/src/modules/shfs

# debian/rules binary_modules

# dpkg -i /usr/src/modules/shfs*.deb

好了,现在shfs模块已经编译安装好了,现在可以直接用mount命令来挂载分区了。

# mount -t shfs root@192.168.1.1:/ /mnt/remotehost -o rmode=755,preserve

这里假设/mnt/remotehost目录已经按照前面那种方法建好了。现在可以跟上面一样使用/mnt/remotehost来存取远程主机的文件系统了,是不是很方便啊?

好了,如果想要开机挂载,关机重启卸载就更方便了。首先还是要做免去ssh登录密码输入这步,这同上面那种方法中介绍的一样,这里就不在重复了。下面假设这步工作已经完成了,然后只需要修改一下/etc/fstab就可以了。而不再需要自己去编写什么mountsshfs,umountsshfs脚本,也不在需要建立/etc/sshfstab这个文件了。

root@192.168.1.1:/ /mnt/remotehost shfs rmode=755,preserve 0 0

添加上面这行到/etc/fstab中,就可以直接开机挂载了,关机和重启卸载了,非常简单。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章