Библиотека сайта rus-linux.net
Обмен файлами с помощью wdfs и FUSE
Оригинал: Sharing files with wdfs and FUSE
Автор: Nathan Willis
Дата: 3 сентября 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 28 сентября 2008
Очень часто в своей работе я переезжаю от компьютера к компьютеру - рабочие станции, ноутбуки, тестовые машины. Однако у меня не болит голова о синхронизации всех нужных файлов, ведь у меня есть одна центральная копия своих документов, к которой я могу получить доступ хоть откуда. Это реализуется с помощью wdfs - что расшифровывается как файловая система WebDAV для FUSE.
Хранить одну копию файлов - означает никогда не думать о синхронизации и об очередном объединении файлов. Вы не окажетесь в такой ситуации, когда некоторые файлы неожиданно для вас будут перезаписаны - вместо этого предлагается одна простая стратегия.
WebDAV - расширение HTTP для распределенного авторинга и контроля версий (Distributed Authoring and Versioning). На серверах Apache оно реализуется в модуле mod_dav, который доступен на многих веб-хостингах, что позволяет пользователям иметь свой сервер WebDAV. WebDAV может работать поверх протокола HTTPS, что делает его более защищенным. Требуется лишь указать пару логин/пароль для каждого пользователя - отличный от других логинов на сервере и .htaccess - таким образом можно создать несколько учетных записей WebDAV для каждой машины и тщательно отслеживать все изменения.
Не буду рассказывать о том, как установить сервер WebDAV; во-первых, в сети множество материалов на эту тему; во-вторых, изящество wdfs состоит в том, что использование модуля FUSE абстрагирует пользователя от деталей реализации. Итак, когда сервер WebDAV запущен, wdfs может монтировать предоставляемые им каталоги в файловую систему Linux. В том числе можно делать это и при загрузке системы.
Как установить и пользоваться wdfs
Чтобы пользоваться преимуществами wdfs, нужно сначала установить FUSE. В последнее время FUSE достаточно популярно и используется многими программами, поэтому наверняка в вашем дистрибутиве Linux этот пакет уже установлен. Если вы перед этим никогда не пользовались FUSE, убедитесь, что пакет настроен правильно.
Запущенный модуль FUSE смотрит на группу fuse, по которой определяет, какие пользователи могут монтировать и размонтировать файловые системы FUSE, поэтому нужно добавить своего пользователя в эту группу, если этого еще не было сделано. Например, так: sudo usermod -a -G fuse пользователь
. Теперь загрузите модуль ядра FUSE: sudo modprobe fuse
.
Если в вашем дистрибутиве Linux нет пакета wdfs, можно скачать последний tar-архив
с веб-сайта проекта. Кроме собственно FUSE, единственной зависимостью wdfs является
neon - библиотека, реализующая клиентскую часть WebDAV. wdfs должно скомпилироваться и установиться из tar-архива с помощью привычных команд: ./configure; make; sudo make install
.
Итак, wdfs скомпилировано и установлено, а модуль FUSE загружен. Теперь нужно создать локальный каталог, в который будут монтироваться удаленные каталоги WebDAV. Монтирование происходит примерно следующим образом:
wdfs http://mywebdavserver.biz/foo ~/локальный_каталог -o username=пользователь -o password=секретное_слово
Как и в случае с веб-браузерами, можно пользоваться URL-ами вида https://, тогда соединение с удаленными каталогами будет производиться по протоколу HTTPS. Если сервер работает не на стандартном порту HTTP или HTTPS, можно указать порт соединения, как обычно - через двоеточие после имени сервера.
Если вы решили воспользоваться wdfs для совместной работы в группах, можно активировать блокировку файлов, добавив опцию -o locking=n
к вышеприведенной команде. Число n
может быть 0, 1, 2 или 3. По умолчанию используется режим 0, который означает отсутствие блокировки. Режим 1 - самый простой; при его включении файл блокируется при открытии и разблокируется при закрытии. Режим 2 блокирует файл на время его записи, а режим 3 блокирует файл до тех пор, пока каталог не будет отмонтирован, либо пока не выйдет заданный тайм-аут. По умолчанию тайм-аут равен 5 минутам, однако его можно изменить, указав опцию -o locking_timeout=число_секунд
.
Пользователям Subversion может быть полезна опция -o svn_mode
, которая активирует специальный режим Subversion для доступа к ревизиям файлов. Среди других опций есть -o accept_sslcert
, которая указывает клиенту WebDAV автоматически принимать SSL-сертификат удаленного сайта; -o no_redirect
запрещает перенаправления с удаленного веб-сайта на другие сайты. Обе эти опции могут быть полезны, если вы собираетесь писать какие-либо скрипты, которые должны работать молча без какого-либо вмешательства пользователя.
Если вы планируете часто пользоваться каталогом, наверняка будет удобнее монтировать его в автоматическом, а не в ручном, режиме. Для этого нужно всего лишь добавить в файл /etc/fstab строку вида
wdfs#http://mywebdavserver.biz/foo /mnt/локальный_каталог fuse users 0 0
Также можно указать несколько опций, разделенных запятыми (например, ,username=пользователь,password=СезамОткройся,acceptsslcert
) сразу после слова users
.
wdfs в сравнении
Удаленный каталог WebDAV, подмонтированный с помощью wdfs, практически не отличается от части локальной файловой системы. Единственное различие, которое вы заметите - естественно, это низкая скорость записи, и большое время отклика, которое неизбежно появляется при использовании WebDAV или любой другой удаленной файловой системы.
Есть причина, по которой я предпочитаю wdfs, а не другие WebDAV-клиенты - это возможность консольной работы и тонкая настройка. Файловые менеджеры GNOME и KDE могут монтировать каталоги WebDAV, однако эти графические программы требуют присутствия пользователя у клавиатуры, который бы ввел логин и пароль, чего не требуется при монтировании каталогов WebDAV с помощью wdfs через fstab.
Есть и другие консольные средства для доступа по WebDAV, например cadaver, nd и (для пользователей Emacs) eldav. Если вам нужно быстренько одиножды воспользоваться WebDAV, можно взять эти клиенты. Есть и более старый модуль FUSE для работы с WebDAV - он называется fusedav, им можно воспользоваться, если что-то с wdfs не получилось.
Несколько лет назад я опубликовал статью о другой файловой системе на основе FUSE - sshfs, которая предоставляет похожие функции как и wdfs. Если у вас SSL-соединение, то можно таким же безопасным образом пользоваться и WebDAV, с помощью wdfs. Преимуществом wdfs является то, что вы можете работать со многими коммерческими веб-хостингами. На всех хороших веб-хостингах, конечно, есть услуга удаленного доступа по SSH, однако если у вас есть WebDAV, вы можете управлять каталогами с помощью отдельных учетных записей из основной учетной записи, и расшаривать лишь отдельный подкаталог, а не все пространство хостинга, что хорошо с точки зрения безопасности. Вдобавок к этому, если потребуется, можно будет получать доступ к каталогу WebDAV из систем Mac или Windows.
Наконец, есть клиенты WebDAV уровня приложений, стоит отметить такие из них, как gobby и недавний AbiCollab. Эти программы дают возможность совместного редактирования документов, что, конечно, замечательно, однако предназначены только для текстовых документов и не могут работать с файлами других типов.
Держать расшаренный каталог на локальном сервере, и раздавать его по NFS - это замечательное решение для домашних компьютеров и ноутбуков, однако вряд ли пригодится в дороге. Все современные среды Linux поддерживают WebDAV в своих графических файловых менеджерах, однако монтирование каталогов WebDAV напрямую в файловую систему дает большую гибкость - другие приложения, никак не связанные с WebDAV, могут воспользоваться его преимуществами; управлять WebDAV просто; при этом можно писать разные скрипты и не заботиться о синхронизации. Все это благодаря WebDAV и wdfs.