Как уже ранее упоминалось, в мире Linux есть много способов расшаривания/передачи файлов по сети (рассматривались Samba, FTP и HTTP). Знаем также, что можно безопасно "ходить" по разных хостах через ssh и копировать файлы через scp. Даже можно работать в Vim на своей машине с помощью netrw плагина, который автоматически при сохранении файла копирует его через один из транспортных протоколов, что настраивается (в том числе и через scp). Естественно, это сопровождается задержками при сохранении, так как каждый раз устанавливается новое соединение. А можно просто примонтировать себе удалённую директорию (структуру, файловую систему и т.п.) и работать с ней как с локальной директорией. Естественно, никто чужой не должен иметь доступ к точке монтирования, иначе зачем эта вся безопасность с ssh?
Итак, для начала вам надо установить sshfs (теоретически, оно должно автоматически подтянуть fuse, на котором sshfs базируется). Все нужные настройки и дополнительные пакеты смотрите для вашего дистрибутива; в основном далее достаточно себя добавить в группу fuse и всё.
Монтирование выполняется командой:
sshfs <-o опции монтирования> user@host:<путь> <точка монтирования>
А размонтирование:
fusermount -u <точка монтирования>
Это всё можно красиво завернуть в простой bash скрипт, дабы облегчить себе же работу (в данном случае, к удалённым хостам Я подключаюсь через SOCKS, проброс через порт 3128):
#!/bin/bash
USAGE="USAGE:\n\
\t$0 mount|umount|remount <host_name>\n"
SSHFS_MOUNT_ROOT=/home/sergius/work/SSHFS
action=$1
host=$2
function mount_sshfs( ) {
if [[ -z $host ]]
then
echo "Invalid arguments"
echo -e $USAGE
exit 2
fi
mkdir -p $host
sshfs -o reconnect,workaround=all,ProxyCommand="/bin/nc.openbsd -x localhost:3128 %h %p" sergius@$host: $SSHFS_MOUNT_ROOT/$host/
}
function umount_sshfs( ) {
fusermount -u $SSHFS_MOUNT_ROOT/$host
}
function remount_sshfs( ) {
umount_sshfs;
mount_sshfs;
}
if [[ $action == "mount" ]]
then
mount_sshfs;
elif [[ $action == "umount" ]]
then
umount_sshfs;
elif [[ $action == "remount" ]]
then
remount_sshfs;
else
echo "Invalid arguments"
echo -e $USAGE
exit 1
fi
exit 0
Сохраняем скрипт под именем "mount_sshfs" и делаем его исполняемым. Теперь монтируем командой (если находимся в директории, где скрипт, то путь начинается с точки):
./mount_sshfs mount home_comp
Где home_comp - имя моего домашнего компьютера. В большинстве случаев, далее вам пригодится только remount.
Есть один недостаток (больше мне не встречалось) в sshfs: когда связь обрывается, а вы выполняли как раз какую-то операцию ввода-вывода - это может затянуться надолго, а уж после появится сообщение с ошибкой. Всегда можно прибить процесс, перемонтировать. В любом случае, это надо всё попробовать самому - лучше один раз пощупать, чем сто раз увидеть.
Да и вообще, sshfs существует уже довольно давно, а вот активно пользоваться этим Я начал лишь несколько месяцев назад. И пришел к выводу, что довольно полезная вещь, по крайней мере в моей работе, поэтому решил это внести в блог, пусть запись вышла немного сырая, но кому-то может пригодиться. Также можете внести предложения к публикации в комментариях, подправлю.
Немає коментарів:
Дописати коментар