Я хотел рассказать про своё открытие afuse — автомонтирование файловых систем по требованию, автоматически. Разве не здорово просто сделать:
И сразу увидеть файлы web-сервера, никак не устанавливая с ним соединение специально? Я этим пользуюсь уже давно, а главное:
Использоваться это может с разными системам, но удобнее всего конечно с sshfs. Думаю с ней многие имели дело, это действительно удобно, но если нужно походить по удалённой файловой системе, каждый раз приходится её монтировать:
Это становится крайне утомительно когда вы работаете с сотней удалённых серверов, особенно когда вам это нужно например, чтобы быстренько перекинуть маленький конфиг-файл с одного удалённого сервера на другой (а качать большие файлы по sshfs и не очень эффективно, лучше использовать rsync или bbcp).
Afuse проект с открытым исходным кодом и сам является fuse файловой системой. Он доступен для большинства современных дистрибутивов.
Очень неплохая статья про его описание, а также настройку уже была на Хабре. Всех кто первый раз пробует, отправляю туда.
Мы же, чтобы не повторяться, пойдём немного дальше.
Единственное хотелось заметить что для дистрибутивов, базирующих��я на RPM (Fedora, CentOS, RHEL, Scientific Linux…) вам потребуется использовать yum/dnf:
Используйте yum вместо dnf на более старых системах, таких как CentOS.
Настройка же ключей, хостов и опций монтирования вряд ли будет сильно отличаться, для тонкостей всегда можно обратиться к манулу.
Полагаю что вы уже поигрались и вам понравилось монтирование sshfs налету. Вот только в вышеупомянутой статье указан ну очень кривой способ монтирования самого afuse. Полагаю что у вас тоже остался осадочек: «Как же так, файловую систему, монтирующую другие файловые системы, нужно каждый раз монтировать вручную!?»
Вот именно как это сделать я и хотел поделиться.
На самом деле, все механизмы уже есть в системе. Так, раз afuse сама является файловой системой, то почему бы не монтировать её стандартным образом из /etc/fstab!?
В принципе это очень даже возможно, однако нет прямого способа передать столько желаемых аргументов.
Поэтому предполагается создать скрипт-обертку /usr/sbin/mount.afuse (выложил также как gist кому так удобнее, там же есть более подробное описание его) приблизительно такого содержания:
Не забываем сделать его исполняемым:
Теперь мы готовы добавить новую системную точку монтирования в /etc/fstab:
Всё, с этого момента, даже после перезагрузки системы afuse примонтирована, а все соединения с удалёнными хостами будут восстановлены автоматически, если какие-то программы работали с удалёнными файлами по таким путям. Не будет ошибок что что-то не доступно.
Разумеется точку монтирования вы можете изменить по своему желанию, может что-то типа /remote. Не забудьте только создать директорию.
Update 14.02.2017: По комментарию Self_Perfection незначительно улучшен код в хелпере для получения пользователя, от которого будет монтироваться директория. Он стал более простым и понятным.
ls /mnt/remote/web.example.com/var/lib/www/
И сразу увидеть файлы web-сервера, никак не устанавливая с ним соединение специально? Я этим пользуюсь уже давно, а главное:
- Это работает из любого источника: Не важно, делаете вы указанный вывод в консоли, сохранили ссылку в MC или переходите из favorites вашего любимого менеджера такого как nautilus или dolphin
- Вы можете переходить на любой хост, куда у вас есть доступ по ключам (настроить запрос пароля тоже можно, но это не интересно)
- Вы можете запросто указать под каким пользователем входить на сервер, используя @:
 
 cd /mnt/remote/apache@web.example.com/var/lib/www/
Что это и зачем
Использоваться это может с разными системам, но удобнее всего конечно с sshfs. Думаю с ней многие имели дело, это действительно удобно, но если нужно походить по удалённой файловой системе, каждый раз приходится её монтировать:
sshfs hostname: mountpointЭто становится крайне утомительно когда вы работаете с сотней удалённых серверов, особенно когда вам это нужно например, чтобы быстренько перекинуть маленький конфиг-файл с одного удалённого сервера на другой (а качать большие файлы по sshfs и не очень эффективно, лучше использовать rsync или bbcp).
Afuse проект с открытым исходным кодом и сам является fuse файловой системой. Он доступен для большинства современных дистрибутивов.
Очень неплохая статья про его описание, а также настройку уже была на Хабре. Всех кто первый раз пробует, отправляю туда.
Мы же, чтобы не повторяться, пойдём немного дальше.
Единственное хотелось заметить что для дистрибутивов, базирующих��я на RPM (Fedora, CentOS, RHEL, Scientific Linux…) вам потребуется использовать yum/dnf:
dnf install afuseИспользуйте yum вместо dnf на более старых системах, таких как CentOS.
Настройка же ключей, хостов и опций монтирования вряд ли будет сильно отличаться, для тонкостей всегда можно обратиться к манулу.
Afuse automount
Полагаю что вы уже поигрались и вам понравилось монтирование sshfs налету. Вот только в вышеупомянутой статье указан ну очень кривой способ монтирования самого afuse. Полагаю что у вас тоже остался осадочек: «Как же так, файловую систему, монтирующую другие файловые системы, нужно каждый раз монтировать вручную!?»
Вот именно как это сделать я и хотел поделиться.
На самом деле, все механизмы уже есть в системе. Так, раз afuse сама является файловой системой, то почему бы не монтировать её стандартным образом из /etc/fstab!?
В принципе это очень даже возможно, однако нет прямого способа передать столько желаемых аргументов.
Поэтому предполагается создать скрипт-обертку /usr/sbin/mount.afuse (выложил также как gist кому так удобнее, там же есть более подробное описание его) приблизительно такого содержания:
# Mount under user and group which are owners of mount point
su -l $( stat --format=%U "$2" ) -c "afuse -o mount_template='sshfs -o reconnect -o auto_cache -o kernel_cache %r:/ %m' -o unmount_template='fusermount -u -z %m' -o auto_unmount '$2'"Не забываем сделать его исполняемым:
chmod +x /usr/sbin/mount.afuseТеперь мы готовы добавить новую системную точку монтирования в /etc/fstab:
afuse# /mnt/remote afuse auto 0 0Всё, с этого момента, даже после перезагрузки системы afuse примонтирована, а все соединения с удалёнными хостами будут восстановлены автоматически, если какие-то программы работали с удалёнными файлами по таким путям. Не будет ошибок что что-то не доступно.
Разумеется точку монтирования вы можете изменить по своему желанию, может что-то типа /remote. Не забудьте только создать директорию.
Update 14.02.2017: По комментарию Self_Perfection незначительно улучшен код в хелпере для получения пользователя, от которого будет монтироваться директория. Он стал более простым и понятным.


