Перейти к основному содержанию

Подключаем Mega через WebDAV в Linux

Virtual Private Cloud — VPC

Куда складывать резервные копии наших файлов? Ясное дело, в облако!

Сейчас существует множество различных сервисов, предоставляющих бесплатные и платные хранилища:

  • Яндекс Диск
  • Google Drive
  • Dropbox
  • Seafile
  • Облако Mail.ru
  • и прочие

Некоторые сервисы имеют собственные приложения, которые нужно установить, настроить, выбрать папку синхронизации. Но не всегда есть такие приложения для Linux, особенно для серверных вариантов. Смонтировал облачный диск в директорию, к примеру, /backup и пользуйся, загружай, удаляй. И это вполне можно сделать, если сервис предоставляет возможность подключения к облачному диску по протоколу WebDAV.

WebDAV (Web Distributed Authoring and Versioning) является расширением протокола HTTP/1.1. Позволяет обращаться к файлам на удаленном сервере и выполнять с ними операции чтения, записи, копирования, удаления и т.д.

Сегодня подключим облачное хранилище Mega в качестве директории /backup с помощью davfs2 в Ubuntu 22.04. Удобная штука, особенно если требуется автоматизировать резервное копирование документов в облако.

https://mega.io/ru/storage

У облачного хранилища Mega есть ряд плюсов. На старте дают 20 ГБ места, которое можно увеличить на год различными достижениями. К примеру, просто установив десктопное приложение и мобильный клиент, получаем на год ещё 10 ГБ. Приглашая друзей, можно добавить ещё места.

Регистрируемся в Mega. Для входа имеем:

  • e-mail в качестве логина
  • пароль

https://mega.io/ru/cmd

Ещё один жирный плюс — поддержка из коробки консольной утилиты MEGA CMD. Это инструмент командной строки, который работает с вашим аккаунтом и данными MEGA. Он позволяет вам получать доступ к сервисам MEGA с помощью команд.

Примечательно, что для обычной загрузки файла пакет davfs2 не требуется, достаточной одной утилиты MEGA CMD. Загрузка файла в облако будет выглядеть как-то так:

#!/bin/bash
# Задаем формат даты
TIME=`date +%Y-%b`
FILES=/tmp/www.$TIME.tar.gz
MYSQL=/tmp/mysql.$TIME.sql.gz
# Создаем архив файлов
tar -czf $FILES -P /var/www/mysite
# Создаем архив базы MySQL
mysqldump -u username --password=mypassword dbname --ignore-table=mysql.event | gzip > $MYSQL
# Загружаем данные
mega-login email@example.com password
mega-put $FILES $MYSQL backups/mysite
mega-logout
# Удаляем файлы
rm $FILES
rm $MYSQL

Скрипт взял здесь:

https://lidar.asia/technologie/bekapim-dannye-servera-na-mega/

Однако, если нужно забэкапить целую директорию с помощью rsync, то пользоваться таким скриптом не получится. На помощь придут davfs2 и WebDAV. С помощью MEGA CMD мы поднимем WebDAV сервис на нашем сервере и смонтируем папку из Mega локально с помощью davfs2.

Установка и настройка davfs2

Устанавливаем пакет davfs2:

apt install davfs2

linux

Сразу после установки пакет попробует настроиться. Настройку можно изменить позже, запустив команду "dpkg-reconfigure davfs2".

linux

В данном случае нам нужно определиться, под каким именно пользователем мы будем монтировать облачный диск. Если пользователь непривилегированный, то нужно включить соответствующую опцию. У меня простой случай, я всё монтирование буду осуществлять от пользователя root, поэтому отвечаю No.

linux

Для монтирования диска требуется отключить использование метода LOCK. Для этого выставим опцию use_locks в 0 в конфигурационном файле /etc/davfs2/davfs2.conf. Поскольку WebDAV сервер будет работать локально и подключаться к нему мы тоже будем локально на том же сервере, то аутентификация не потребуется. Устанавливаем ask_auth в 0.

mega

Установка MEGA CMD

https://mega.io/ru/cmd

mega

Находим команду для установки MEGA CMD под нашу ОС. У меня Ubuntu Server 22.04.

mega
cd /tmp
wget https://mega.nz/linux/repo/xUbuntu_22.04/amd64/megacmd-xUbuntu_22.04_amd64.deb
apt install "$PWD/megacmd-xUbuntu_22.04_amd64.deb"

Устанавливаем пакет.

mega

Проверяем что пакет установлен:

mega-help
mega

Запуск сервера WebDAV

Пакет MEGA CMD установлен, с помощью него подключимся к Mega. В облаке в корне создаю папку Backup, в которую потом буду лить бэкапы.

Подключаемся к облаку:

mega-login email@example.com password

Подключаем директорию Backup в облаке по WebDAV:

mega-webdav /Backup
mega

Директория подключилась и доступна локально по адресу:

http://127.0.0.1:4443/ecljyKBB/Backup

У вас будет другой путь, он уникален для каждой директории. Путь также можно посмотреть в web-интерфейсе Mega.

Для отключения:

mega-logout

До перезагрузки настройки WebDAV сохраняются. Отключить можно командой:

mega-webdav -d /Backup

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

Пароль и логин для подключения по WebDAV нам не нужен, но для совместимости укажем анонимные данные для подключения. Сохранять будем в файле /etc/davfs2/secrets. Этот файл является системным, доступ на чтение к нему имеет только пользователь root.

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

chmod 600 $HOME/.davfs2/secrets

Данные сохраняем в формате:

$PathToMountPoint $USER $PASSWORD

В нашем случае:

http://127.0.0.1:4443/ecljyKBB/Backup user password

Где user и password я от балды указал, без атрибутов не хочет работать.

mega

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

Придумываем куда будем монтировать облачную папку и создаём соответствующую директорию, например, /backup.

linux

Редактируем /etc/fstab, добавляем строку:

http://127.0.0.1:4443/ecljyKBB/Backup /backup davfs user,rw,noauto 0 0

В данном случае я использую опцию noauto, чтобы папка не монтировалась при загрузке. Монтировать я её буду скриптом. Если вам требуется автоматическое подключение, то используйте _netdev, поскольку для монтирования облачной папки требуется сетевое подключение.

Монтируем

Вроде всё настроили проверим. 

mega-login email@example.com password
mega-webdav /Backup

Монтируем директорию:

mount /backup

Ошибок нет. Перейдём в неё и создадим файл:

cd /backup
touch 123.txt
mega

Проверяем облако.

mega

Файл появился в облачной папке.

Выходим из папки и демонтируем:

cd ..
umount /backup
mega-logout
mega

Всё работает, минимальная конфигурация для работы с облачным диском из Mega в Ubuntu 22.04 подготовлена.

Дополнительно

Яндекс Диск:

https://webdav.yandex.ru:443 /media/Yandex davfs user,rw,noauto 0 0

Облако Mail.ru:

mount.davfs -o username=example@yandex.ru https://webdav.cloud.mail.ru/Backup/cloud /backup

4shared:

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

IDriveSync:

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

OwnCloud:

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

OwnCube:

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

Ссылки

https://github.com/meganz/MEGAcmd/blob/master/contrib/docs/WEBDAV.md

Примечание

davfs2 формирует кэш, который может разрастаться.

/var/cache/davfs2/

Я его вручную  скриптом чищу после демонтирования шары. Сам он не чистится.

mega

Теги

 

Похожие материалы

Заглушка для технических работ на Nginx

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

Теги