В данной статье рассмотрены основы применения утилиты «davfs2» (см. davfs2) для монтирования сетевых облачных хранилищ (дисков) по протоколу «WebDAV» (см. WebDAV) в среде ОС «Ubuntu».

Облачные хранилища (диски) находят все большее практическое применение. В то время, как многие поставщики подобных услуг предлагают свое программное обеспечение для доступа к своим сетевых ресурсам, существует широко распространенный протокол, для передачи информацию между удаленным облачным хранилищем и локальной ЭВМ пользователя – «WebDAV» (см. WebDAV). Применение такого протокола также требует специализированного программного обеспечения, однако, оно, зачастую, легко доступно.

В ОС «Ubuntu» имеется поддержка монтирования сетевых облачных хранилищ (дисков) с применением графического интерфейса программы-файлового-менеджера «Nautilus», который использует утилиту «GVFS» (см. GVFS). Однако, такой подход имеет ряд недостатков:

  • Примонтированный облачный диск доступен только для программ использующих графическую оболочку Gnome/Unity.
  • Присутствует доля отказов данного функционала (см. can't connect to webdav shares).

Альтернативой использованию пакета «GVFS» является утилита поставляемая в пакете «davfs2» (см. davfs2). Эта утилита позволяет монтировать облачный диск подобно монтированию обычного носителя данных – в постоянную локацию, что делает такой диск доступный для любой программы имеющей доступ к ФС ОС. В свою очередь, такой метод тоже имеет свой недостатки:

  • Сложность настройки.
  • Файловые менеджеры считают папки примонтированные с помощью «davfs2» локальными и будут пытаться получить информацию и сгенерировать эскизы для медиа-файлов, что требует скачивания этих файлов. А это требует времени в течении которого файловый менеджер будет недоступен, а интернет-соединение загружено передачей данных.

Установка

Ввиду того, что утилита «davfs2» из одноименного пакета не входит в базовую комплектацию ОС «Ubuntu», следует провести предварительную установку данного пакета. Выполнить это можно, например, командой в терминале

sudo apt-get install davfs2

Настройка

По завершении установки следует выполнить переконфигурирование пакета, например, командой

sudo dpkg-reconfigure davfs2

выбрав пункт «Да», для разрешения монтирования облачных хранилищ непривилегированным пользователям ОС. Заместо этого можно просто выполнить команду

sudo chmod 4755 /usr/sbin/mount.davfs

Также, для удобного монтирования, без необходимости ввода пароля корневого пользователя (root), необходимо добавить пользователя в группу «davfs2» (FIXME - это точно для этого?). Например, если планируется добавить данного пользователя, следует выполнить команду.

sudo usermod -aG davfs2 $USER

Если необходимо добавить другого пользователя ОС, то «$USER» следует заменить на имя пользователя в ОС, которому будет дозволено монтировать облачные диски посредством «davfs2».

Создание точки монтирования

Монтирование возможно только в существующую папку, создать которую можно, например, командой

mkdir $PathToMountPoint

или

sudo mkdir $PathToMountPoint

если для создания папки требуются административные привилегии. Где «$PathToMountPoint» следует заменить допустимым именем в ФС ОС «Ubuntu». Например, «$PathToMountPoint» может принимать следующие значения

  • «$HOME/CloudDisk» – точка монтирования размещена в домашней папке пользователя и под-папке «CloudDisk».
  • «/media/CloudDisk» – точка монтирования размещена в системной папке «/media» и под-папке «CloudDisk». Для создания требуются административные привилегии. Рекомендуется создавать точку монтирования в папке «/media», потому что при этом облачное хранилище будет доступно к монтированию\размонтированию через Nautilus.

Во избежание конфликтов, такую папку (естественно с другим именем) следует создавать для каждого удаленного облачного диска, который планируется использовать.

Настройка учетных данных

Для того, что бы не было необходимости вводить пароль при каждом монтировании, следует сообщить имя пользователя удаленного облачного диска и его пароль утилите «davfs2». Для этого необходимо редактировать файл «/etc/davfs2/secrets» или «$HOME/.davfs2/secrets».

Эти файлы содержат секретную информацию (пароль пользователя для доступа к удаленному облачному диску), следует позаботится о их сохранности и защищенности

Файл «/etc/davfs2/secrets» является системным, доступ на чтение к нему имеет только корневой пользователь «root», поэтому хранение пароля в нём более безопасно. Файл «$HOME/.davfs2/secrets» после установки пакета «davfs2» не существует. Его следует создать, например, выполнив команды

mkdir $HOME/.davfs2
touch $HOME/.davfs2/secrets

Если файл уже существовал, то выполнение этих команд не навредит его содержимому. Далее рассматривается указание аутентификационной информации пользователя облачного диска в файле «$HOME/.davfs2/secrets».

Открыв этот файл для редактирования, например, командой

xdg-open $HOME/.davfs2/secrets

необходимо ввести строку

$PathToMountPoint $USER $PASSWORD

с указанием абсолютного пути точки монтирования вместо «$PathToMountPoint» (так же как указано в файле «/etc/fstab»), имени пользователя у поставщика облачного диска вместо «$USER» и его пароля вместо «$PASSWORD», например

/mnt/cloud MyName 12345

Можно указывать адрес облачного диска, а не путь монтирования

$WebDAV_Address $USER $PASSWORD

где параметр «$WebDAV_Address» аналогичен описанному в файле «/etc/fstab», например,

https://example.com/webdav.php MyName 12345

Имеются проблемы с символами $^#& и пробелами в паролях. Следует использовать Escape-символы или окружать пароль скобками " ". Например пароль «qwe # rty» можно записать как

"qwe # rty"

или

qwe\ \#\ rty

Ввиду наличия секретной информации в этом файле, обязательно следует запретить другим пользователям системы производить его чтение, например, командой

chmod 600 $HOME/.davfs2/secrets

Настройка монтирования

fstab

Сопоставление адреса облачного диска и точки его монтирования производится за счет информации в файле «/etc/fstab» (см. fstab, fstab). В этот файл следует внести информацию о параметрах монтирования для каждого облачного диска. Для редактирования этого файла можно выполнить команду (требуются административные привилегии)

sudo gedit /etc/fstab

Файл «/etc/fstab» следует дополнить строкой (дописать в самом конце)

$WebDAV_Address $PathToMountPoint davfs user,rw,noauto 0 0

или

$WebDAV_Address $PathToMountPoint davfs user,rw,_netdev 0 0

где «$WebDAV_Address» надо обязательно заменить на веб-адрес поставщика услуги сетевого облачного диска, а «$PathToMountPoint» обязательно заменить на абсолютный путь к точке монтирования (без переменных среды, начинающихся с символа «$», путь должен начинаться с символа «/»). Опция «noauto» указывает, что монтирование производится вручную (см. ниже), в то время как альтернативная ей опция «_netdev» – что монтирование будет произведено автоматически при наличии подключенного сетевого интерфейса (см. fstab).

Наличие опции noauto или _netdev обязательно, в противном случае считается, что указана опция auto и система будет пытаться подключить сетевой диск до поднятия самого сетевого интерфейса

Например, для распространенных поставщиков облачных дисков (и соответственно подобранного названия точки монтирования) эта строка описана ниже.

  • «Яндекс Диск» (см. Работа через WebDAV). Строка в «/etc/fstab» может иметь вид
    https://webdav.yandex.ru:443 /media/Yandex davfs user,rw,noauto 0 0

    В этом примере явно указан порт для подключения. Это не обязательно, если поставщик облачного диска использует стандартные порты: 80 для HTTP и 443 для HTTPS.

  • «4shared» (см. What is WebDav and how to use it ). Строка в «/etc/fstab» может иметь вид

    https://webdav.4shared.com/ /media/4shared davfs user,rw,noauto 0 0

  • «IDriveSync» (см. IDriveSync join hands with WebDAV). Строка в «/etc/fstab» может иметь вид

    https://dav.idrivesync.com/ /media/IDriveSync davfs user,rw,noauto 0 0

  • Облачные диски на основе «ownCloud» (см. ownCloud, OwnCloud). Здесь есть особенность, т.к. сервис «ownCloud» может работать на вашем сервере, тогда адрес необходимо прописывать следующим образом

    http://ваш_сервер.ru/owncloud/files/webdav.php

    если вы пользуетесь общим сервером «ownCloud», то строка в «/etc/fstab» примет вид:

    http://getfreecloud.com/files/webdav.php /media/ownСloud davfs user,rw,noauto 0 0

    Еще один поставщик облачного диска, работающего на основе «ownCloud», это «OwnCube». Строка в «/etc/fstab» может иметь вид

    https://owncube.com/files/webdav.php /media/OwnCube davfs user,rw,noauto 0 0

При ручном наборе этих строк обратите внимание, на то, что многие поставщики облачных дисков используют протокол HTTPS вместо HTTP.

Проверка монтирования

После завершения данных манипуляций целесообразно проверить монтирование, выполнив команду «mount»

mount $PathToMountPoint

где «$PathToMountPoint» точка монтирования облачного диска описанная в «/etc/fstab». Или

mount $WebDAV_Address

где $WebDAV_Address адрес для доступа к облачному диску, прописанный в «/etc/fstab».

Отмонтировать такой диск можно командой «umount»

umount $PathToMountPoint

или

umount $WebDAV_Address

Монтирование через Nautilus

Если вы создали точку монтирования в папке «/media», то на левой панели файлового менеджера Nautilus будет доступна кнопка, по нажатию на которой будет происходить монтирование\размонтирование, как с обычной флешкой.

Автоматическое монтирование

Опция «noauto» не позволяет диску примонтироваться автоматически при старте системы. Для автоматического монтирования необходимо воспользоваться опцией «_netdev» (см. fstab), в таком случае попытка примонтировать диск будет произведена при загрузке системы, до входа под конкретным пользователем. Для этого, учетные данные доступа к облачному диску должны хранится в «/etc/davfs2/secrets» (см. Настройка учетных данных). Такой облачный сетевой диск будет монтироваться для всех пользователей ОС.

Если же диск должен монтироваться только для конкретного пользователя, то наряду с указанием опции «noauto» в «/etc/fstab» следует создать подобный скрипт

#!/bin/bash
sleep 120 && mount https://webdav.yandex.ru

и добавить его в автозагрузку этого пользователя.

Резервное копирование

Бекап с помощью Déjà Dup

Особенность программы Déjà Dup заключается в том, что она поддерживает работу по webdav. Минусы данного способа резервного копирования - файлы на сервере невозможно прочесть без данной программы и копировать можно только каталоги своего пользователя Для работы необходимо:

  • настроить папки для резервного копирования (при необходимости указать папки-исключения);

  • настроить расписание автоматического резервного копирования (если необходимо);

  • указать носитель

    Местоположение резервной копии: WebDav

    Сервер: webdav.yandex.ru

    Использовать защищенное соединение (HTTPS)

    Порт: 443

    Папка: указать папку на Яндекс.Диск (например: /backup)

    Имя пользователя: Имя пользователя Яндекс.Диск без @yandex.ru

  • для запуска необходимо нажать «Создать резервную копию»

Бэкап с помощью rsync(терминал)

Способ, использующий для резервного копирования программу rsync позволяет сделать копию любого файла на вашем компьютере, в том числе файлов настроек и системных файлов. Для настройки необходимо:

  • Создать скрипт, выполняющий резервное копирование. Файл в любом удобном для вас месте1) со следующим содержимым:

#!/bin/bash
mount -t davfs https://webdav.yandex.ru
notify-send "Запущено резервное копирование, дождитесь сообщения о завершении" -i deja-dup
rsync -qralo --delete-before --exclude-from=/home/<имя_пользователя>/bin/backup.conf / /media/Яндекс.Диск/backup
umount https://webdav.yandex.ru
notify-send "Резервное копирование окончено" -i deja-dup
  • данный скрипт использует файл ~/backup.conf добавляя в исключения все записанные в нем каталоги. Файл ~/bin/backup.conf должен иметь вид:

/media
/dev
/mnt
/tmp
/proc
/sys
/var/backups
/var/cache
/usr/src
 
/home/"user_name1"/Загрузки
/home/"user_name1"/Видео
 
/home/"user_name2"/Музыка

Данный скрипт будет пытаться сделать резервную копию абсолютно всей файловой системы, поэтому, ввиду ограниченности пространства сетевого хранилища, уделите особое внимание указанию папок-исключений.

На момент написания статьи наблюдаются проблемы в скорости работы rsync при обращении к Яндекс.Диск, ориентировочно из-за медленного расчета контрольной суммы на стороне сервера, поэтому делать резервные копии большого объема пока нежелательно.

  • Добавить созданный скрипт на ежемесячное выполнение в cron от пользователя root

sudo ln -s ~/bin/backup.sh /etc/cron.monthly/backup.sh

Шифрование

FIXME

Проблемы

Если у вас возникли малейшие проблемы при выполнении какой либо части из данной инструкции, не поленитесь, сообщите в теме обсуждения, тем самым вы поможете себе- вам подскажут как действовать и другим- авторы поправят статью в соответствии с вашими замечаниями. Если нашли в статье неточность или знаете сами как решить проблему- не стесняйтесь, входите в ВИКИ под своим логином и паролем от форума и смело правьте статью.

  • Существенная проблема данного подхода к монтированию облачных дисков состоит в том, что файловые менеджеры («Nautilus», «Dolphin» и т.п.) считают такие файлы и папки локальными, как результат – пытаются сгенерировать для них эскизы и получить другую медиа-информацию, что приводит к скачиванию этих файлов, а это может затянуться на некоторое время, в течение которого файловый менеджер будет недоступен, а канал связи загружен. Решить эту проблему можно отключив все эскизы в Вашем файловом менеджере или использовать другой файловый менеджер, например «MC»

Ссылки

1) рекомендую хранить все свои скрипты в папке ~/bin, она не удалится при переустановке системы