sshfs基於ssh掛載遠端目錄

駿馬金龍發表於2018-05-29

為了像本地一樣訪問遠端主機上的目錄,通常我們會在遠端主機上使用nfs來匯出目錄,並在本地主機上mount這個nfs檔案系統。如果是windows系統,則使用cifs或samba的方式來訪問。

但可能我們忽略了一個遠端連線最通用的工具:ssh。其實很多和遠端有關的行為,基於ssh都能完成,即使是實現像NFS一樣的功能。

如何通過ssh來掛載遠端目錄?需要安裝fuse-sshfs包,這個包在epel中提供。使用fuse-sshfs包提供的sshfs工具可以基於ssh直接掛載遠端目錄,不用像NFS一樣還要export。

$ yum -y install fuse-sshfs

$ rpm -ql fuse-sshfs
/usr/bin/sshfs
/usr/share/doc/fuse-sshfs-2.5
/usr/share/doc/fuse-sshfs-2.5/AUTHORS
/usr/share/doc/fuse-sshfs-2.5/COPYING
/usr/share/doc/fuse-sshfs-2.5/ChangeLog
/usr/share/doc/fuse-sshfs-2.5/FAQ.txt
/usr/share/doc/fuse-sshfs-2.5/NEWS
/usr/share/doc/fuse-sshfs-2.5/README
/usr/share/man/man1/sshfs.1.gz

例如,掛載192.168.100.150上的根目錄”/”到本地的/mnt上。注意:只能掛載遠端目錄,像普通檔案、塊裝置(如/dev/sda2)等無法掛載。

sshfs root@192.168.100.150:/ /mnt

如此一來,以後可以直接訪問本地/mnt來訪問遠端的根目錄。例如複製檔案、移動檔案、新建檔案等等操作。

如果要解除安裝掛載點。直接umount即可。

umount /mnt

相比於NFS,sshfs更簡潔,它是基於fuse模組來實現的,可以認為sshfs所掛載的檔案系統是fuse檔案系統的一種實現。所謂fuse檔案系統,它全稱為filesystem in userspace,顯然,它是使用者空間的檔案系統(其實是一個虛擬檔案系統),其功能非常強大,可用於實現自己的檔案系統。詳細資訊可以sshfs -hman sshfsman fusermountman mount.fuse

但是NFS比sshfs要完整的多,nfs畢竟是”小型”分散式檔案系統,對資料的一致性、完整性實現的都比較完美,訪問許可權控制也比sshfs要豐富的多。

總的來說,sshfs可以臨時用來快速訪問遠端檔案。

更詳細的sshfs,參見https://linux.cn/article-7855-1.html

相關文章