Linux: Используем sshfs

Иногда появляется необходимость не просто получить доступ к удаленной файловой системе по ssh – а примонтировать удаленную папку как диск (и сделать это все по ssh). Для этого существует клиент sshfs.

sshfs позволяет монтировать удаленную папку по ssh(sftp). Таким образом получаем возможность работать с файлами примонтированной папки – как с локальными файлами.

Для начала установим клиент и добавим нашего пользователя в группу fuse (примеры будут на основе дистрибутива кубунту)

$ sudo apt-get install sshfs
$ sudo adduser yourusername fuse

и перегрузим компьютер

Теперь для монтирования удаленной папки вводим команду

$ sshfs -C -p PORT user@remote.host.or.ip:/host/dir/to/mount ~/localdir

не забываем – что папка ~/localdir должна быть создана

Для размонтирования можно использовать команду

$ fusermount -u ~/localdir

—–

Можно также написать небольшой скрипт для удобства монтирования и размонтирования папки

#!/bin/bash
mount_dir=/home/user/localdir

if [[ ! -e $mount_dir ]]; then
    mkdir -p $mount_dir
elif [[ ! -d $mount_dir ]]; then
    echo "$mount_dir already exists but is not a directory" 1>&2
    exit
fi

if [ "$1" = "-u" ]; then
    fusermount -u -z $mount_dir
else
    sshfs -C -p PORT user@remote.host.or.ip:/host/dir/to/mount $mount_dir
fi

Вначале проверяем существует ли папка и при необходимости создаем ее. Далее смотрим – если скрипт запущен с флагом ‘-u’, то пытаемся отмонтировать папку – если без флага, то монтируем.

Идеи были взяты отсюда и отсюда.