Облачные хранилища данных становятся всё более востребованными, как среди частных пользователей, так и среди компаний. При этом некоторые интернет сервисы хранения файлов предоставляют возможность доступа к своему облаку по протоколу WebDAV (Web Distributed Authoring and Versioning).

Преимущества доступа по webdav по сравнению с веб доступом:

  • работа с файлами в автоматическом режиме (скачивание/закачивание bat файлами и скриптами JS/VBS/PS), то есть, в первую очередь, это означает возможность автоматического сброса резервных копий на интернет хранилище
  • подключение облака как сетевого диска (обычного network drive) с присваиванием буквы логического диска (E:, F: и т.д.), другими словами, возможность работы с облачными файлами из обычных программ (офисные пакеты, графические редакторы и т.п.)
  • возможность заливать большие файлы (обычно веб интерфейс позволяет закачивать в хранилище файлы до 2 ГБ). Здесь надо отметить, что бесплатные аккаунты часто ограничены в размере файлов по сравнению с платными, например, на Box бесплатно можно хранить файлы размером не более 250 МБ (на Business аккаунтах размер файла может составлять до 5 ГБ, на Enterprise вроде до 15 ГБ); правда, с большими файлами есть и другие проблемы, но об этом ниже

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

WebDAV в FAR Manager

Работать с файловым хранилищем по WebDAV можно и без подключения сетевого диска, если использовать плагин NetBox в Far Manager, при этом файлы будут доступны в самом Far Manager, но недоступны в командной строке и в других программах, например, в проводнике Windows.

Подключение сетевого диска WebDAV

Эта функция Windows позволяет получить доступ к файлам по WebDAV не только в файловых менеджерах (Far Manager и т.д.), но также и в командной строке и в проводнике Windows.

В Windows 7 есть встроенный веб клиент, который подключает облако WebDAV как обычный сетевой диск с присваиванием буквы. При подключении следует ввести адрес, который зависит от хранилища.

Логотип Яндекс.Диск

Строка подключения WebDAV для Яндекс.Диска:

https://webdav.yandex.ru

Подробные инструкции с картинками: Доступ к Яндекс.Диск через WebDAV

Строка подключения WebDAV для Box:

https://dav.box.com/dav

Подробные инструкции с картинками: Does Box support WebDAV?

Строка подключения WebDAV для OneDrive потребует cid – это идентификатор учетной записи, его можно посмотреть в адресной строке браузера, если открыть веб-интерфейс OneDrive:

https://d.docs.live.net/cid

Облако Mail.ru тоже предлагает доступ по WebDAV, хотя и только на платных тарифах.

Строка подключения WebDAV для Mail.ru:

https://webdav.cloud.mail.ru/

Подключение WebDAV из командной строки Windows

Также можно использовать возможности командной строки – команда NET USE успешно подключает WebDAV хранилища, например, эта команда подключает папку Яндекс.Диск в виде логического диска Y:

 net use Y: https://webdav.yandex.ru password /user:email_address /persistent:yes

Эта команда для подключения папки Box в виде логического диска X:

net use X: https://dav.box.com/dav password /user:email_address /persistent:yes

Чтобы подключить OneDrive к букве O: (значение cid берётся из адресной строки браузера в веб-итерфейсе OneDrive:

net use O: https://d.docs.live.net/cid password /user:email_address /persistent:yes

Чтобы подключить OneDrive к назначаемой автоматически букве диска:

net use * https://d.docs.live.net/cid password /user:email_address /persistent:yes

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

Примечание: параметр /persistent:yes необязательный, он задаёт автоматическое восстановление подключения при перезагрузке компьютера, подробнее об этом см. ниже.

После подключения можно пользоваться стандартными командами для работы с файлами, например:

copy backup.zip y:\backup

Проблемы с большими файлами

Операции (скачивания, закачивание) над небольшими файлами проходят отлично. Однако при большем размере файла (50 МБ и более) возникают проблемы. Например, появляется сообщение Delayed Write Failed (Ошибка отложенной записи), а размер закачанного файла оказывается 0 байт.

Для решения этих проблем можно попробовать изменить параметры клиента, как это описано ниже, подробнее см. в статье You cannot download more than 50 MB or upload large Files when the upload takes longer than 30 minutes using Web Client in Windows 7

Но в действительности получилось закачать файл 300 МБ только командой xcopy с отключением буферизации:

xcopy *.zip y:\backup /Y /Z /V /J

Копирование закончилось успешно, при том что не получилось ни проводником Windows, ни copy /y /z /v.

Лимит на размер файла

Исходное значение 50 000 000 байт. Задается в байтах параметром реестра:

DWORD FileSizeLimitInBytes

в разделе:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters

Например, можно задать 500 000 000.

Таймаут

Исходное значение 1800 секунд или 30 минут, поэтому операции более 30 минут прерываются. Значение таймаута задается в секундах параметром реестра:

DWORD FsCtlRequestTimeoutInSec

в разделе:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MRxDAV\Parameters

В статье рекомендуется значение 3600, т.е. 3600 секунд или один час.

Производительность wevdav хранилищ

Это очень интересный вопрос для резервного копирования, потому что нам надо понимать, сколько времени будет занимать копирование файла резервной копии на сервер по webdav, ведь размер такого файла может быть и 100МБайт, и 1 ГБайт и больше.

Следующий тест показывает время выгрузки файла 188 МБ на Яндекс Диск по webdav. Подключение к интернету 100 Мбит/с, поэтому на выгрузку существенно не влияет. Для регистрации времени начала и окончания копирования используется программа nhts.

C:\Users\username\Documents>dir *.zip
11.09.2015  15:55       197 858 220 backup-20150911.zip

C:\Users\username\Documents>nhts HH:mm:ss 'Запуск' & xcopy backup-2015091
1.zip y:\backup /Y /Z /V /J & nhts HH:mm:ss 'Завершено'
15:58:05 Запуск
C:backup-20150911.zip
Скопировано файлов: 1.
15:58:43 Завершено

В итоге, файл 188 МБ был скопирован за 38 секунд, то есть скорость выгрузки составила 4,9 МБ/с или 40Мбит/с – хороший результат для резервного копирования. Соответственно, файл 1 ГБ будет загружен на сервер примерно за 3,5 минуты.

Теперь такой же тест для Box (он подключен к X:):

C:\Users\username\Documents>nhts HH:mm:ss 'Запуск' & xcopy backup-2015091
1.zip x:\backup /Y /Z /V /J & nhts HH:mm:ss 'Завершено'
16:09:57 Запуск
C:backup-20150911.zip
Скопировано файлов: 1.
16:11:49 Завершено

Box работает помедленнее – время копирования того же файла составило 112 секунд, и, соответственно, скорость копирования составила 1,7 МБ/с или 13,4 Мбит/с. При такой скорости время копирования 1ГБ файла составит больше 10 минут. Сам Box пишет, что для business и enterprise аккаунтов есть какая-то оптимизация для повышения скорости копирования на сервер, см. How can I optimize my upload speeds?

Понятно, что скорость копирования может меняться в зависимости от загрузки каналов связи или серверов, но видно, что Яндес Диск быстрее, и с учетом ограничения на размер файла в 250 МБ в Box предпочтительнее для резервного копирования использовать бесплатный Яндекс Диск, чем бесплатный аккаунт Box.

Возможные проблемы и их решение

При появлении проблемы подключения важно определить, какую именно ошибку сообщает программа – чтобы делать правильные действия для её устранения.

Ошибка 67 — не найдено сетевое имя

Ошибка 67 означает, что не удалось найти сервер по указанному в команде сетевому имени. В английской версии Windows эта ошибка описывается как «The network name cannot be found».

В первую очередь необходимо проверить, правильно ли в команде набран протокол и адрес webdav сервера, например, для Яндекс.Диска должно быть:

https://webdav.yandex.ru

Во-вторых, проверить разрешение сетевого имени – сервер должен быть доступен:

C:\Windows\System32>ping webdav.yandex.ru

Pinging webdav.YANDEX.ru [87.250.251.53] with 32 bytes of data:
Reply from 87.250.251.53: bytes=32 time=46ms TTL=51
Reply from 87.250.251.53: bytes=32 time=35ms TTL=51
Reply from 87.250.251.53: bytes=32 time=62ms TTL=51
Reply from 87.250.251.53: bytes=32 time=38ms TTL=51

Ping statistics for 87.250.251.53:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 35ms, Maximum = 62ms, Average = 45ms

Если сервер неизвестен или не отвечает, то явно что-то не так с интернет подключением.

Если сетевое имя сервера указано корректно, сервер успешно пингуется, но подключение с правильными параметрами всегда завершается ошибкой 67, то причиной проблемы является блокировка подключения со стороны локальной сети. Например, у меня на работе происходит именно так, потому что доступ к интернет хранилищам по WebDav заблокирован администраторами намеренно, наверное, чтобы предотвратить слив информации на сторону. Чтобы убедиться, что причина именно в этом, необходимо попробовать подключение с точно такими же параметрами, но из другой сети, лучше из домашней, потому что операторы обычно не блокируют WebDAV коммуникации. Если проверка подтвердила, что локальные админы блокируют подключение, то решить проблему можно только через них.

Ошибка 1244 — пользователь не зарегистрирован

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

Поэтому при этой ошибке я проверяю, что пароль введён правильно и находится между адресом сервера и параметром /user.

Также сложность может возникнуть, если пароль содержит спецсимволы, имеющие особое значение в командных cmd/bat файлах, потому что эта часть строки может быть интерпретирована неправильно. Чтобы это проверить, можно попробовать временно указать звёздочку вместо пароля, тогда программа запросит пароль после запуска. Если подключение при вводе пароля по запросу сработает, то надо проверить пароль на наличие недопустимых символов. Например, у меня один из паролей содержал символ амперсанда ‘&’, и это приводило к ошибке 1244. Обойти ошибку удалось, заключив пароль в кавычки. Но если в пароле есть символ кавычек, то это обойти, скорее всего, не удастся – лучше изменить пароль, исключив из него кавычки.

Действия с хранилищем в командном файле

Как проверить, что хранилище подключено

Проверка того, что подключение установлено, и сервер доступен, может потребоваться в командных файлах. Её можно выполнить командой IF EXIST.

Например, cmd/bat файл для подключения WebDAV проверяет, если диск уже подключен, то сразу выходит:

if exist Y:\* echo Already connected. & exit /b 0

Или cmd/bat файл резервного копирования проверяет перед выгрузкой, что сетевой диск доступен:

if not exist Y:\* echo Not connected. & exit /b 1

Копирование файлов по WebDAV

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

xcopy *.zip y:\backup /Y /Z /V /J

Автоматическое подключение сетевого диска

Возможность для автоматического подключения сетевого диска при загрузке компьютера на самом деле уже есть и включается параметром /persistent:yes (см. выше).

Недостаток этого решения состоит в том, что при загрузке компьютера делается только одна попытка подключения диска. Если на этот момент не было сетевого подключения или временно сервер был недоступен, то диск так и останется не подключенным.

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

 net use Y: https://webdav.yandex.ru password /user:email_address /persistent:yes

Подключение сетевого диска с проверкой и повтором

Чтобы сделать более надёжное решение, использую cmd/bat файл с проверкой результата и повтором попытки:

@echo off
if exist y:\* echo Already connected. & exit /b 0
:connect
net use y: https://webdav.yandex.ru password /user:nhutils@yandex.ru
if errorlevel 1 ping 127.0.0.1 -n 60 > nul & goto connect


В случае ошибки NET USE попытка подключения повторяется через 1 минуту. Задержка делается с помощью ping, подробнее см. Как сделать задержку в командном файле.

Этот командный файл можно запускать вручную или через автозагрузку.

Чтобы не мешало чёрное окно bat файла, можно спрятать его путём запуска через wsh скрипт, см. Скрыть консольное окно.

Файлы для скачивания

Командные файлы подключения по WebDAV

Все скрипты и командные файлы

См. также

WebDAV (Web Distributed Authoring and Versioning)

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

Как сделать задержку в командном файле
Несколько способов, как запрограммировать задержку по времени в bat файле CMD/BAT: варианты с фиксированным временем ожидания ping -n, sleep.exe из Windows XP Resource Kit и скрипт WSH/JScript, а также вариант с ожиданием нажатия клавиши timeout /t.

Доступ к облаку по webdav
Метки:     

24 мыслей о “Доступ к облаку по webdav

  • 01.04.2020 в 19:48
    Постоянная ссылка

    У меня OneDrive for bussines 5 tb подключаю в вин 7 как сетевую папку и ее размер почему то 145 гб , если подключаю через AirLiveDrive вообще показывает 100гб ???

    Ответ
    • 06.04.2020 в 01:48
      Постоянная ссылка

      В Windows для WebDAV сетевого диска показываются размеры (общий размер диска и размер свободного места) не сетевого диска, а системного диска, например, C:. У меня происходит так.

      Правильные размеры можно увидеть в приложении OneDrive.

      Ответ
  • 08.11.2019 в 19:48
    Постоянная ссылка

    Я чего то не понял через какой или с помощью какого WebDAV-клиента вы создаёте сетевой диск?

    Ответ
    • 08.11.2019 в 19:58
      Постоянная ссылка

      Сам себе отвечу, извините за невнимательность, встроенный в Windows 7 веб клиент.

      Ответ
  • 13.06.2019 в 14:02
    Постоянная ссылка

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

    Ответ
  • 13.02.2019 в 04:03
    Постоянная ссылка

    А кто-нибудь встречался с такой ошибкой, применительно к Яндекс.Диску через WebDAV:

    «Failed to copy from Источник : Cannot copy file (121): Превышен таймаут семафора»

    Ошибка возникает только при копировании больших файлов, например, около 1Гб и более через SyncBackFree (утилита для бэкапа). По панели в программе копирование выглядит так, что в начале процесса скорость копирования большая, но начинает постепенно замедляться, пока не доходит до 0 (примерно через 25 секунд). При этом прогресс-бар останавливается, например, на 2/5 длины, и замирает. Как будто переполняется некий буфер.

    Раньше эти бэкапы прекрасно работали, но с декабря 2018 резко какие-то проблемы начались. После переписки с техподдержкой Яндекса грешу на реализацию протокола WebDAV в Windows 10.

    Когда копирую большой файл вручную, прогресс доходит до 99% и замирает.

    Ещё заметил, что иногда не с первого раза могу прочитать свойства файла (дата модификации и размер) в Яндекс.Диске через WebDAV. Точнее в списке файлов Проводника всё отображается, а вот в диалоговом окне «Свойства» из контекстного меню — иногда (в первую попытку) пустота.

    Вот эти (и не только) параметры в регистре повышал, — не помогло:
    FileSizeLimitInBytes, FsCtlRequestTimeoutInSec.
    FileSizeLimitInBytes вообще максимальный поставил.

    Нагуглил, что ошибка «Превышен таймаут семафора» бывает при копирование на внешние устройства через USB, и в таком случае рекомендуют удалять все USB через Диспетчер устройств, и затем поочередно подключать устройства снова. Но у меня USB в этом копировании вообще никак не участвуют.

    Ответ
    • 14.02.2019 в 15:11
      Постоянная ссылка

      Попробовал сейчас, 1 ГБ файл выгружается в яндекс.диск из windows 10 успешно, с первого раза и при стандартном копировании в Far Manager, и через xcopy (с ключами выше).

      Семафоры – это низкоуровневая вещь и используются много где, поэтому таймаут семафора 121 причину не объясняет.
      Причиной может быть даже нестабильный интернет (небольшие потери), когда нарушается передача данных, и очередной шаг копирования вываливается в таймаут.

      То, что прогресс бар показывает процент выполнения неадекватно, связано с порядком выгрузки файла по WebDAV: сначала происходит его копирование в локальный кеш, а потом выгрузка по сети.
      Первые 99% относятся к копированию в локальный кеш, поэтому проходят быстро. В Far Manager именно так и выглядит.

      Вообще, копирование больших файлов по WebDAV — рискованное мероприятие для сохранности данных. Безопаснее разбивать резервную копию на части по 100-200 МБ, например, и копировать с контролем данных (ключи для xcopy в статье).

      Ответ
  • 01.12.2016 в 15:49
    Постоянная ссылка

    тема интересная,спасибо,делал первый раз по ней
    хотелось бы внести некоторые команды которыми я пользуюсь,думаю другим будет полезно

    1.выбор буквы диска автоматом,т.е.первая свободная буква
    net use * https://webdav.yandex.ru/ ваш пароль /user:логин полностью /persistent:yes
    2.монтирование сетевого диска Y
    net use Y: https://webdav.yandex.ru/ ваш пароль /user:логин полностью /persistent:yes

    3.просто вставляйте вместо логина и пароля ваши данные и еще-пробелы играют большую роль

    4.для автозапуска работает только команда 2
    net use Y: https://webdav.yandex.ru/ ваш пароль /user:логин полностью /persistent:yes
    достаточно bat поместить в автозагрузку,при запуске компьютера логин и пароль просить не будет
    вместо Y можно указать любой свободный диск
    5.команда для копирования на яд
    robocopy «D:\test» «Z:\test2» «*.*» /s /z /R:1 /W:5 /maxage:1
    где:
    D:\test-ваша папка test на жестком диске D
    Z:\test2-ваша папка на яндекс диске Z
    maxage:2-копирутся файлы в папке D:\test которые старше 2 дней,если число 2 убрать то копирутся файлы в папке D:\test полностью
    6.команду robocopy «D:\test» «Z:\test2» «*.*» /s /z /R:1 /W:5 /maxage: можно так же поместить в автозапуск
    возможно неправильный текст
    этот текст со всеми командами в облаке мейл https://cloud.mail.ru/public/5aYV/ZrTrnzJiM

    Ответ
    • 04.12.2016 в 00:43
      Постоянная ссылка

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

      Ответ
    • 04.07.2017 в 10:00
      Постоянная ссылка

      Владимир, позвольте спросить. А у Вас есть архивы большого размера? Я вот тоже решил 2 гига выложить в ЯД, по вашему методу. Но наткнулся на ошибку, 53 и 64

      100% Новый файл 1.8 g Архив SQL_20170701.zip
      2017/07/03 17:48:43 ОШИБКА 53 (0x00000035) Копирование файла d:\backup\Архив SQL_20170701.zip
      Не найден сетевой путь.
      Ожидание 5 секунд… Повтор…
      100% Новый файл 1.8 g Архив SQL_20170701.zip
      100% Новый файл 1.8 g Архив SQL_20170702.zip
      2017/07/03 18:14:09 ОШИБКА 53 (0x00000035) Копирование файла d:\backup\Архив SQL_20170702.zip
      Не найден сетевой путь.
      Ожидание 5 секунд… Повтор…
      100% Новый файл 1.8 g Архив SQL_20170702.zip
      100% Новый файл 1.8 g Архив SQL_20170703.zip
      2017/07/03 18:37:30 ОШИБКА 53 (0x00000035) Копирование файла d:\backup\Архив SQL_20170703.zip
      Не найден сетевой путь.
      Ожидание 5 секунд… Повтор…
      100% Новый файл 1.8 g Архив SQL_20170703.zip
      2017/07/03 18:47:57 ОШИБКА 53 (0x00000035) Копирование файла d:\backup\Архив SQL_20170703.zip
      Не найден сетевой путь.

      ОШИБКА: ПРЕВЫШЕН ПРЕДЕЛ ПОВТОРНЫХ ПОПЫТОК.

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

      Ответ
        • 04.07.2017 в 10:22
          Постоянная ссылка

          Забыл, вот это
          100% Новый файл 1.3 g Архив SQL nomber tho_20170701.zip
          2017/07/03 18:53:08 ОШИБКА 64 (0x00000040) Копирование файла d:\backup\Архив SQL nomber tho_20170701.zip
          Указанное сетевое имя более недоступно.

          В инструкциях по яндекс диску, есть упоминание что
          «Если Вы хотите загрузить файл, размером больше 2гб, воспользуйтесь программой ЯД, или протоколом Webdav»
          Но что то, пошло не так.

          Ответ
          • 04.07.2017 в 11:43
            Постоянная ссылка

            Уже не пользуюсь веб дав,airexplorer рулит и акронис
            а так раньше все работало без проблем

          • 05.07.2017 в 11:51
            Постоянная ссылка

            Благодарю за ответы. Попробовал и AIR, прикольно. Всех благ Вам!

  • 30.11.2016 в 22:29
    Постоянная ссылка

    При подключении ЯД ошибка. Пробовал разные комбинации и как в статье
    net use Y: https://webdav.yandex.ru password /user:login /persistent:yes
    и свою
    net use Y: \\webdav.yandex.ru@SSL /USER:Diskjuve@yandex.ru «cntn@1706652

    Запрошенная операция не была выполнена, так как пользователь не зарегистрирован.

    Ответ
    • 01.12.2016 в 15:18
      Постоянная ссылка

      А почему пароль в конце команды? По правилам net use (см. net help use) он должен быть перед /user. Можно ещё вместо пароля поставить звёздочку, чтобы пароль запрашивался.

      Ответ
    • 04.12.2016 в 00:40
      Постоянная ссылка

      И ещё, в пароле символ кавычки – в командной строке такое не проходит. Попробуйте убрать кавычки из пароля.

      Ответ
  • 04.11.2016 в 11:24
    Постоянная ссылка

    у вас команда
    net use Y: https://webdav.yandex.ru /user: /persistent:yes
    не работает,выдает ошибки,исправьте
    1.кавычек не должно быть
    вот команда по которой подключилось без проблем,буква диска присвоилась автоматом
    net use * https://webdav.yandex.ru/ пароль /user:логин полностью

    Ответ
    • 04.11.2016 в 15:15
      Постоянная ссылка

      В статье написано правильно, без кавычек и с указанием пароля. Но! При копировании угловые скобки могли потеряться. И если у вас возникает ошибка, пишите какая именно.
      Возможно, у вас буква Y уже занята?

      Ответ

Добавить комментарий для nhutils Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *