Webdav total commander настройка
Если бы в качестве введения я начал расписывать достоинства облачных хранилищ данных, ты бы подумал, что меня только что разморозили после двадцатилетнего анабиоза или что я серьезно злоупотребляю снотворными :). Поэтому скажу кратко, по-программистски: когда передо мной встала задача сделать программу, которая могла бы без привязки к API конкретного сервиса работать с файлами на множестве хранилищ (речь шла о бэкапе), оказалось, что это не так просто. Обо всех тонкостях и подводных камнях проделанной работы я решил тебе рассказать в этой статье.
WebDAV
Изначально DAV разрабатывался для совместного создания и редактирования веб-страниц, но в процессе использования он нашел применение в качестве сетевой распределенной файловой системы, эффективной для работы в высоконагруженной среде и поддерживающей неустойчивое соединение. Таким образом, DAV подходит для управления файлами на веб-серверах, иными словами, реализации облачных хранилищ информации, где и был применен. С его помощью можно выполнять основные операции над файлами, содержащимися на сервере, проводить расширенные операции, как то: блокировка, получение метаданных, контроль версий и другие. Этот протокол стал заменой для старого доброго FTP, чье время подошло к концу.
WebDAV предоставляет семь команд:
- PROPFIND — получение свойств объекта на сервере в формате XML;
- PROPPATCH — изменение свойств объекта;
- MKCOL — создать папку на сервере;
- COPY — копирование на стороне сервера;
- MOVE — перемещение на стороне сервера;
- LOCK — заблокировать объект;
- UNLOCK — снять блокировку с объекта.
Таким образом, WebDAV позволяет изменять свойства хранящихся на сервере объектов, выполнять поиск с учетом свойств, блокировать объект (в нашем случае — файл) для организации возможности его редактирования только одним пользователем в распределенной среде, в которой доступ могут иметь много юзеров, управлять версиями файлов (посредством унаследованных команд check -in, -out), а также производить расширенный контроль доступа к файлам на основе списков.
Кроме того, WebDAV поддерживает унаследованные команды: GET — для скачивания файла, PUT — для заливки на сервер и DELETE — для удаления объекта. Мы не будем рассматривать все команды; в моем случае для реализации функционала утилиты мне понадобилось лишь четыре.
Ныне в разработке протокола участвуют Microsoft, Mozilla, Novell, IBM и другие. Поэтому не стоит удивляться тому, что поддержка WebDAV присутствует во многих продуктах Microsoft (в том числе Internet Explorer, проводнике, веб-сервере IIS и других), браузере Mozilla Firefox, продуктах фирмы Novell, IBM. Дополнительно, с помощью установки плагинов «подружить» с протоколом можно Total Commander и FAR.
Как уже было упомянуто, в Windows удаленное хранилище WebDAV можно подключить в проводник как дополнительный диск. Подобным образом можно поступить в OS X, организовав подключение к WebDAV-серверу как дополнительную директорию в обозревателе Finder.
Возможные решения
Передо мной стояла задача подключиться и организовать работу с данными на двух файловых хранилищах: Яндекс.Диск и Dropbox. Оба эти сервиса поддерживают работу по протоколу WebDAV. Регистрируя почту на Яндексе, ты автоматом получаешь доступ к 10 Гб облачного хранилища, к которому можно подключиться не только через стандартный клиент, но и с помощью сторонней тулзы (например, своей программы) посредством протокола WebDAV. При регистрации на Dropbox ты получаешь 5 Гб дискового пространства, которое можно использовать через стандартный клиент. Однако, чтобы получить доступ к хранилищу по WebDAV, надо пройти дополнительную регистрацию. В итоге, как выяснилось, этот доступ не бесплатный, тем не менее после регистрации дается свободный доступ на две недели. Размеры хранилищ можно увеличивать: или через доплату, или с помощью участия в разных акциях, проводимых сервисами, например находить баги и сообщать о них разработчикам.
Когда мне понадобилось написать программу для работы по WebDAV-протоколу, я первым делом заглянул в Win32 API, чтобы посмотреть, есть ли там функции для этого, подобно имеющимся для работы с FTP. Забегая вперед, отмечу, что сроки у меня стояли сжатые, поэтому использовать функции уровня API я не собирался. Как и следовало ожидать, в Win32 API, начиная с версии для Windows Vista, входит WebDAV API. В него входит одно перечисление, три структуры и набор функций. Я подумал, что это хороший знак, поскольку на основе стандартного API непременно имеются более высокоуровневые решения и мне не придется засиживаться с функциями API-интерфейса.
Тут под руку попалась Delphi XE3, и я решил проверить, какие инструменты для работы с протоколом WebDAV есть у нее. Оказалось, что в ней (на вкладке Indy Clients палитры компонентов) есть компонент IdWebDav. Я уже подумал, что на этом исследования закончились… Но обнаружилось, что этот компонент ни в какую не коннектится к Яндексу (Яндекс.Диск был для меня более приоритетным сервисом, поэтому все тесты я в первую очередь проводил на нем).
где stream — файловый поток, предварительно созданный для чтения.
Подключаемся к Yandex.disk + создаем коллекцию
Следующим действием напишем небольшую программу, способную выполнить четыре операции: создать папку на удаленном хосте, загрузить объект, скачать объект и удалить объект. Этих операций достаточно для большинства приложений, решающих производственные задачи. Для простоты создадим WinForms-приложение. В паре слов расскажу о своей проге. Она представляет собой консольное приложение, запускаемое батником по расписанию. Ее основное действие — это заливка файлов на удаленный хост, при этом в ее задачи входит корректная обработка маски для выбора файлов, а также обработка путей, по которым они размещены, плюс правильное создание в облаке иерархии папок, подобной размещенной на локальном диске. Кроме того, поскольку программа работает в автоматическом режиме, она создает файл с логами. В нашей сегодняшней программе мы опустим эти действия (очевидно, что они не относятся к теме) и сконцентрируемся на протоколе WebDAV.
WebDAV-протокол не позволяет создать несколько вложенных папок за один запрос, например /folder1/folder2/; можно создать только одну папку: /folder1/. Если каталог существует, а отправленный запрос пытается создать одноименную директорию, в таком случае сервер сгенерирует исключение, которое надо перехватить конструкцией try/catch. В приведенном выше примере не происходит обработка исключений, поэтому если будешь использовать этот код в своем приложении, то не забудь ее добавить. Если необходимо узнать, существует каталог или нет, то для этого можно воспользоваться запросом PROPFIND, а потом получить и пропарсить ответ сервера, содержащий инфу в формате XML о имеющихся на сервере объектах. Но это получится долго, и, на мой взгляд, лучше использовать запрос MKCOL и в случае присутствия одноименной папки обработать исключение. Таким образом в своей консольной утилите я создаю иерархию папок. Кроме того, если одноименный каталог уже существует, происходит заход в него.
Удаление объекта
Удаление файла и/или директории по протоколу WebDAV реализуется так же просто, как создание коллекции. Для реализации этой задачи послужит приведенный выше код, в котором надо заменить строчку, задающую выполняемый сервером метод, на следующую:
В этом случае также лучше использовать конструкцию try/catch для перехвата исключения, которое может возникнуть по причине отсутствия удаляемого объекта.
Скачивание файла
Чтобы скачать файл из облачного хранилища по протоколу WebDAV, нужно проделать не так уж много манипуляций с имеющимся кодом. Но для начала закинь какой-нибудь файл в облако стандартными средствами (через веб-интерфейс или десктопный Яндекс-клиент). По замыслу, при скачивании файла в четвертое (нижнее) поле ввода мы будем вводить имя файла, который хотим закачать. Это же имя присвоим файлу-результату на локальном компе. Заметь, на сервере мы можем указать /Software/file.txt и будет получен доступ к файлу в папке Software, однако в локальной файловой системе автоматом папка создана не будет, поэтому ее предварительно надо создать. Коротко говоря, мы будем качать файл ZuneSetupPkg.exe (незаменимая тулза для работы с Windows Phone, которую частенько приходится доустанавливать на чужих компах, поэтому она всегда у меня под рукой — в облаке) из корня Яндекс.Диска в директорию с экзэшником.
В последней строчке кода читаем из заголовка ответа от сервера размер файла и сохраняем его в переменную. Дальше создаем файловый поток для записи файла на диск:
Затем получаем поток от сервера:
Порциями читаем из него данные и пишем их в файл, пока есть что писать:
Этот код не лишен исключений, которые надо ловить, среди них: (404) невозможно найти файл (на сервере), невозможно записать в указанное место и многие другие.
Загрузка файла на сервер
В полноценной программе надо осуществлять закачку сразу нескольких файлов (по желанию юзера), выбор файлов по маске, создание иерархии каталогов и, наконец, обработку ошибок. Мы же, чтобы не толочь воду в ступе, все это опустим и сконцентрируемся на загрузке одного заданного файла, без создания папок и обработки ошибок. Все это оставим тебе в качестве домашнего задания. Итак, в подготовленной мной проге из обработчика нажатия на кнопку вызывается метод UpdateFile, ему передаются имя хоста и имя загружаемого файла, которые берутся из соответствующих полей ввода. Начало самого метода подобно рассмотренным выше, однако теперь в заголовке запроса мы передаем на выполнение сервером команду PUT, то есть выказываем наше желание загрузить файл. Если при выполнении предыдущих запросов мы особо не опирались на документацию, то на этот раз она нам очень пригодится: включим в заголовок запроса все рекомендуемые Яндексом поля, а также некоторые дополнительные. Итак, рассмотрим код заголовка, а потом обсудим траблы:
Итоги
На этом разработка нашей утилиты подошла к концу. В ней мы реализовали весь планируемый функционал — четыре самые нужные команды, без которых не может обойтись ни один менеджер управления файлами на удаленном хосте. Мы не стали привязываться к услугам определенного хостинга, используя его API, мы разработали универсальное приложение, общающееся с сервером по стандартному протоколу WebDAV. Это позволило нашей программе, используя один код, подключаться сразу к нескольким серверам (я тестировал на Yandex.disk и Dropbox). Тем не менее, как мы увидели, разные сервисы несколько по-разному интерпретируют и поддерживают протокол.
Дальнейшее развитие проги предоставляю тебе, по ходу статьи я указал на возможные улучшения: это и загрузка нескольких файлов, и создание иерархии папок, и распараллеливание загрузки, и многое другое. Если копнуть глубже в протокол WebDAV, можно реализовать другие команды для управления контентом на сервере.
На этой ноте я хочу пожелать тебе удачи во всех делах и быть побольше на свежем воздухе :). До встречи на страницах ][!
Юрий Язев
Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».
Все знают, как пользоваться Яндекс.Диском через веб-интерфейс. А можно скачать и установить приложение Яндекс.Диск, но мне больше нравится другой способ – подключить Яндекс.Диск как дополнительный сетевой диск. Можно, например, завести общий аккаунт с другом и иметь один диск на двоих. Как это сделать? Смотрите инструкцию ниже.
Нажмите правой кнопкой мыши на пункте Этот компьютер и выберите Подключить сетевой диск.
Включите опцию Восстанавливать подключение при входе в систему.
Введите логин и пароль вашей учетной записи на Яндексе
Включите опцию Запомнить учетные данные и нажмите ОК.
Файлы Яндекс.Диска будут доступны на созданном сетевом диске. Пользутесь!
т.е. ты просто опубликовал страницу помощи с яндекса?
вебдав - тормозная технология.
а мне RaiDrive больше нравится.
Там показывает нормальную информацию по занято/свободно в отличии от вышеупомянутого подключения
прикольно то, что этот вебдав отлично работает в линуксе (консольном) на сервере на ВПСке. Использую его для бэкапов.
Ну ну. Если влетит шифровальщик: привет данным на я.дискеКопипаст хелпа яндекса в горячем? Серьёзно?
Но стоит помнить, что WebDAV - это не синхронизация, а просто заливание файлов в облака. На компе локальные копии при таком способе не сохраняются.
но ведь это не удобно ппц, яндекс диск 3 версии достаточно крут сам по себе. Единственное применение это примонтировать диск к серваку или на работе где нет возможности поставить программу
Главное не удалить нужный файл, так как в отличии от приложения он не отправится в корзину Я.Диска, а удалится навсегда.так вроде яндекс диск тоже самое и сам делает, только вместо "сетевого диска" он летающую тарелку оставляет, способ хуйня какая-то
Всё тупит и тормозит. Пытаюсь посмотреть размер папки с сотней файлов - каждый раз показывает разный размер - то 2 гига, то 4,5, то 800 метров. Пытаюсь скачать её на рабочий стол - появляется окно начала копирования (там где вычисляется размер папки), доходит до какого-то произвольного размера папки и пропадает. Для мелких одиночных файлов сойдёт, но для серьёзных объёмов непригодно от слова совсем.
Только есть нюанс - яндекс через WebDAV тормозной. Если файлов много - есть риск повесить эксплорер.
Вот и подросло поколение. грустно чего-то. пойду накачу полтишочек.
Что бы плохого не готовили о мейл ру, но у них удобное приложение для монтирования облачных хранилищ "диск о" и поддерживает кучу сервисов :мейл ру, гугл драйв, яндекс, дробокс и тд. Не реклама, сам решил воспользоваться дня 3 назад наверное.Если тянуть по вебдаву большие файлы, оно может ругаццо ошибкой 0x800700df
да и по номеру ошибки норм гуглится
Спасибо за инфу, очень удобно)
С google drive что-то подобное можно сделать?
В загрузчике яндекса есть несколько инструментов по оптимизации загрузки на серверы и контроля целостности. Вы добровольно от этого отказываетесь, но не понятно что приобретаете.
Как то решено было попробовать этот способ, но он оказался полным говном. Регулярно при передаче больших файлов этот диск зависал к херам
Стоит учесть, что это дико не стабильно, если с инетом проблемы, то будьте готовы к тому что файл может залиться битым и т.д.
Крайне не рекомендую этим пользоваться во всяком случае встроенном в 10-ку.
в Украине походу не фурычит из-за запретов
А зачем вам общий Я. Диск с другом? Чтобы общие фотки тёток юзать?"
А как пароль восстановить от яндекса без фото с паспортом? p.s. захожу через вк
Вот бы кто подсказал, как место на нём бесплатно увеличить, было бы дело.
Советую, там место не ограничено
А подскажите, такое же но с гугл диском можно сделать? Если да, то как? Диск О от мейл прикольнее. Шустрее вебдав работает. Хотя думаю технология та же, но есть тихая закачка. Файлы скинулись сразу и потихоньку грузятся. Скорости обмена хватает на быстрое открытие фото и видео. Фуллхд не пробовал.Просто спасибо. снес ЯД =)))
О воспользуюсь, спасибо!
К сожалению не знал.
Webdav от яндекс диска помер, можете забыть, он делает вид, что работает, но скорость никакая, около мегабита в минуту, пользоваться невозможно.
Все, хорошо, но есть парочка проблем. Скорость доступа зависит от интернета, плюс сам диск довольно тормозной. Такое ощущение, что там обычный жесткий диск, а не ссд. Не большое пространство, ради 10 гигов.. Вот, если бы 1 ТБ, тогда еще можно.. Ну и самое главное, возможность потерять пароль/логин и бан от яндекса. Вот последнее самое серьезное, не знаю почему об этом никто не говорит, но файлы в этом случае они восстановить не дадут. Было раз 20 - вы нарушили условия пользования, а что за условия не говорят.. Не доверяю я этим облакам..
хорошая идея, забрал
но это под Линухом.
А вот мне не понятно, у меня куплен 1 ТБ на ЯД, создал диск, показывает что у меня всего 476 ГБ, из них больше 200 свободно, хотя в интерфейсе у меня свободно 13 Гб всего.
Вопрос, что хранить на тех 25 ГБ что Яндекс дает бесплатно?
я не знаю точно конечно, я старый тупой но от яндекс меня тупо блевать тянет, это как от пидора на читах или скриптах . как от мажера на понтах в оообщем невкусно
Отдавать свои файлы Яндексу и мэил ру в нашей стране, все равно что голым ходить по улицеРебят, подскажите пожалуйста:
Купил ssd, форм-фактора 2280 на 1Тб.
Поставил, а система не видит. И через "Администрирование" не видит.
Обычно устанавливаешь новый диск, так из проблем это только форматнуть, чтоб винда увидела и готово.
прикольно - но не работает
Выглядит как попытка завладеть чужими данными. БУГАГА!
Яндекс закрывает WebDAV на диске для сторонних приложений и не признается в этом.
Летом приобрел 1Тб пространства на Яндекс.Диске с целью организовать хранение бэкапов домашних документов. И таки организовал при помощи кросплатформенной Duplicati, настроив работу с диском по WebDAV.
Однако недавно обнаружил, что некоторые бэкапы не создаются. Причем последний удачный бэкап для одной из копий был аж 5 октября.
Обследование показало что зависает загрузка бэкапов в облако. В начале грешил на программу, пару раз обновлял, менял настройки. ничего не давало результатов. Но затем протестил соединение WebDAV с помощью двух других приложений (nemo и nautilus) и обнаружил что подвисает аплойд и в них.
Началась переписка с поддержкой диска:
В последующем общении Фёдор продолжал уверять меня, что проблема именно в моем ПО, не смотря на все мои возражения:
Но пока я ждал ответа выяснилось, что я далеко не один такой. На одном небезызвестном ресурсе проблема уже давно обсуждается в теме "Яндекс Диск и Webdav". О чем я и сообщил Фёдору.
Ну хорошо хоть возврат средств сделали (пока не сделали, но обещают).
Больше всего в истории поражает то, с каким настойчивым упорством ТП открещивается от того что проблема на их стороне, намекая видимо на то, что десятки разработчиков внесли в свои проекты правки, приведшие к проблемам в работе с Я.Д.
А заверения в том, что Яндекс поддерживает WebDAV полноценно дают понять, что в ограничении скорости аплойда нет никаких технических причин, и скорость режется исключительно по юзерагенту. Таким образом Яндекс подтверждает, что он чхал на потребности пользователей и сделает все чтобы перевести их на своё ПО. ну или заставить отказаться от использования услуг компании.
Другими словами вы можете открыть доступ для нескольких человек к одной папке. Это удобно, если несколько человек работают удаленно от NAS с одной и той же папкой.
Благодаря своему алгоритму работы Total Commander выдает максимальные значения при скорости копирования файлов по протоколу WebDAV. Что очень удобно при копировании большого количества небольших файлов.
Настройка сетевого хранилища QNAP
Для начала настроим сетевое хранилище. Зайдите в меню Панель управления > Серверы приложений > Веб-сервер.
Проверьте какие порты указаны в настройках веб-сервера. Для успешного подключения по протоколу WebDAV из Интернета эти порты должны быть открыты на вашем роутере (если таковой стоит перед сетевым хранилищем).
Установите галочку Включить WebDAV и нажмите Применить.
Зайдите в меню Панель Управления > Настройка привилегий > Общие папки.
Сделаем доступ по WebDAV для папки Public. Для этого нажмите кнопку редактировать, как это показано на скриншоте.
Настройка Total Commander
Скачайте и установите приложение Total Commander с сайта разработчика.
В нашем примере пусть это будет папка D:\WebDav. Теперь необходимо установить этот плагин в программу Total Commander.
Запустите Total Commander.
Откройте меню Конфигурация > Настройка.
В открывшемся меню откройте закладку Плагины > выберите Плагины файловой системы (.WFX) > Настройка.
В закладке плагинов файловой системы нажмите Добавить.
Найдите папку, куда был разархивирован плагин WebDAV (в нашем примере это D:\WebDAV), укажите файл davplug.wfx и нажмите Открыть.
Откройте меню Сеть / FS-плагины.
Откройте папку WebDAV, нажмите на клавиатуре клавишу F7, чтобы создать новое подключение. Придумайте название для нового подключения, в нашем примере это будет “Соединение с QNAP”.
Остановимся на наиболее важных пунктах следующего меню.
- Connectto – укажите IP-адрес, имя myQNAPcloud или доменное имя сервиса DynDNS сетевого хранилища. В нашем примере мы используем подключение через аккаунт myQNAPcloud.
- Username/Password – укажите имя пользователя и пароль вашего аккаунта на сетевом хранилище QNAP. Его мы указывали в настройках папки на QNAP.
- Send/ReceiveaccentsinURLsasUTF-8Unicode – включит использование UTF-8 при кодировке имен файлов. В противном случае вы не сможете работать с именами файлов и каталогов на русском языке.
- Usemulti-stepuploadmethod – использование многоуровневого метода закачки.
Теперь вам доступны файлы и каталоги на сетевом хранилище по протоколу WebDAV.
Total Commander имеет замечательную возможность управлять вашими облачными хранилищами, без необходимости закачивать файлы на компьютер (хотя, разумеется загружать их тоже возможно).
Total Commander и Яндекс Диск, Google Drive, Droopbox, Облако Mail ru
Забегая вперед, Облако от Майл ру имеет волшебную возможность давать прямые ссылки на картинки, загруженные в Облако. Что позволяет выставлять фотографии, хранящиеся в Облаке в ваш блог например.
Итак самое главное по порядку.
1. Нужно скачать сам Total Commander, например здесь (хотя в поиске вы можете найти много других хороших вариантов для скачивания).
4. В открытом Total Commander ищем скаченные архивы и жмем на них Enter. Плагины устанавливаются и вы можете приступать работать с облачными хранилищами.
5. Для создания например нового облака Google, нужно нажать F7.
Соединиться с Яндекс Диском через WebDav можно и в Мой Компьютер-Сетевые подключения-Подключить Сетевой Диск (подробнее). Из плюсов - вы будете видеть эскизы картинок. Из минусов - не очень удобно копировать туда-сюда файлы. В Total Commander все же удобнее работать.Ошибка "Could not load SSL library"
Часто случается подобная ошибка с плагином Облако Майл ру с Total Commander. Решаем ее быстро и радикально. Заходим в архив плагина, скаченный нами. Там есть две папки -32 и 64 битная. Выбираем какая у нас Windows и из этой папки копируем оба файла, которые там лежат. И вставляем их в два места: в папку установленного Total Commander и в папку установленного плагина в том же Total Commander (все это будет на диске С в папке Program Files).
Читайте также: