Как уже ранее упоминалось, в мире 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 существует уже довольно давно, а вот активно пользоваться этим Я начал лишь несколько месяцев назад. И пришел к выводу, что довольно полезная вещь, по крайней мере в моей работе, поэтому решил это внести в блог, пусть запись вышла немного сырая, но кому-то может пригодиться. Также можете внести предложения к публикации в комментариях, подправлю.
Немає коментарів:
Дописати коментар