Облачное хранилище данных становится все более популярным как среди частных пользователей, так и среди бизнеса. В то же время некоторые службы хранения файлов в Интернете предоставляют возможность доступа к своему облаку с использованием протокола WebDAV (Web Distributed Authoring and Versioning).
Преимущества доступа через webdav по сравнению с веб-доступом:
- работа с архивами в автоматическом режиме (загрузка/загрузка bat-файлов и JS/VBS/PS-скриптов), то есть, в первую очередь, это возможность автоматического восстановления резервных копий в онлайн-хранилище
- подключение облака в качестве сетевого диска (обычный сетевой диск) с присвоением буквы логического диска (Е:, F: и т д.), иными словами, возможность работы с файлами в облаке обычных программ (офисных пакетов , графические редакторы и др.)
- возможность загружать большие файлы (обычно веб-интерфейс позволяет загружать в хранилище файлы до 2 Гб). Здесь следует отметить, что бесплатные аккаунты часто имеют ограниченный размер файла по сравнению с платными, например, в Box бесплатно можно хранить файлы не более 250 МБ (в Бизнес-аккаунтах размер файла может быть до 5 ГБ, на Enterprise вроде до 15GB); однако есть и другие проблемы с большими файлами, но об этом ниже
В статье будет рассказано о возможностях использования 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
Подробная инструкция с изображениями: Поддерживает ли Box 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, например, эта команда подключает папку Яндекс.Диск как логический диск И:
net use Y: https://webdav.yandex.ru пароль /пользователь:адрес электронной почты /постоянный:да
Эта команда предназначена для монтирования папки Box как логического диска X:
сетевое использование X: https://dav.box.com/dav пароль/пользователь:адрес_электронной почты/постоянный:да
Для подключения OneDrive на букву О: (Значение cid берется из адресной строки браузера в веб-интерфейсе OneDrive:
сетевое использование ИЛИ: https://d.docs.live.net/cid пароль /пользователь:адрес электронной почты /постоянный:да
Чтобы подключить OneDrive к автоматически назначенной букве диска:
net use * https://d.docs.live.net/cid password /user:email_address/persistent:yes
Хотя вы можете выбрать автоматический выбор буквы диска (указав звездочку), я предпочитаю использовать фиксированные буквы; это упрощает работу с пакетными файлами.
Примечание. Параметр /persistent:yes является необязательным. Он устанавливает автоматическое повторное установление соединения при перезагрузке компьютера. Подробнее см ниже.
После подключения вы можете использовать стандартные команды для работы с файлами, например:
скопировать backup.zip в папку \backup
Проблемы с большими файлами
Операции (загрузки, выгрузки) с небольшими файлами проходят нормально. Однако если размер файла больше (50 МБ и более), возникают проблемы. Например, появляется сообщение «Ошибка отложенной записи», а размер загружаемого файла составляет 0 байт.
Чтобы решить эти проблемы, вы можете попробовать изменить настройки клиента, как описано ниже. Дополнительные сведения см в разделе Вы не можете загружать более 50 МБ или загружать большие файлы, если загрузка занимает более 30 минут с помощью веб-клиента в Windows 7
А на деле получилось загрузить 300Мб файл только командой xcopy с отключенной буферизацией:
xcopy *.zip y:\backup /Y /Z /V /J
Копия выполнена успешно, хотя ни проводник Windows, ни копия /y/z/v не удались.
Лимит на размер файла
Исходное значение составляет 50 000 000 байт. Задается в байтах параметрами реестра:
Ограничение размера файла DWORD в байтах
в главе:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
Например, вы можете ввести 500 000 000.
Таймаут
Начальное значение равно 1800 секунд или 30 минут, поэтому операции продолжительностью более 30 минут прерываются. Значение тайм-аута задается в секундах значением реестра:
DWORDFsCtlRequestTimeoutInSec
в главе:
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 ' Running' & 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 Завершено
Коробка работает медленнее - время копирования того же файла составило 112 секунд, следовательно, скорость копирования составила 1,7 МБ/с или 13,4 Мбит/с, при такой скорости время копирования файла объемом 1 ГБ составит более 10 минут. Сам Бокс пишет, что для аккаунтов бизнес и энтерпрайз есть какая-то оптимизация для увеличения скорости копирования на сервер, см. Как мне оптимизировать скорость загрузки?
Понятно, что скорость копирования может варьироваться в зависимости от загруженности каналов связи или серверов, но понятно, что Яндекс Диск быстрее, а учитывая ограничение на размер файла в 250 МБ в Box, Яндекс Диск предпочтительнее бесплатно для резервного копирования, чем бесплатный аккаунт Box.
Возможные проблемы и их решение
При возникновении проблемы с подключением важно определить тип ошибки, о которой сообщает программа, чтобы предпринять соответствующие шаги для ее устранения.
Ошибка 67 — не найдено сетевое имя
Ошибка 67 означает, что сетевое имя, указанное в команде, не смогло найти сервер. В английской версии Windows эта ошибка описывается как «Не удается найти сетевое имя».
В первую очередь нужно проверить, правильно ли были введены в команду протокол и адрес сервера webdav, например, для Яндекс.Диска это должно быть:
https://webdav.yandex.ru
Во-вторых, проверьте разрешение сетевого имени — сервер должен быть доступен:
C:\Windows\System32>ping webdav.yandex.ru Ping webdav.YANDEX.ru [87.250.251.53] с 32 байтами данных: Ответ от 87.250.251.53: bytes=32 time=46ms TTL=51 Ответ от 87.250 .251.53 : bytes=32 time=35ms TTL=51 Ответ от 87.250.251.53: bytes=32 time=62ms TTL=51 Ответ от 87.250.251.53: bytes=32 time=38ms TTL=51 Статистика Ping для 87.250.251.53: Пакеты: Отправлено = 4, получено = 4, потеряно = 0 (0% потерь), приблизительное время прохождения сигнала туда и обратно в миллисекундах: минимум = 35 мс, максимум = 62 мс, среднее значение = 45 мс
Если сервер неизвестен или не отвечает, ясно, что что-то не так с интернет-соединением.
Если сетевое имя сервера верное, сервер пингуется успешно, но соединение с правильными параметрами всегда завершается с ошибкой 67, то причина проблемы в блокировке соединения из локальной сети. Например, на моей работе именно так и происходит, потому что администраторы намеренно блокируют доступ к интернет-хранилищу через WebDav, вероятно, чтобы предотвратить утечку информации. Чтобы убедиться, что причина именно в этом, следует попробовать подключиться с точно такими же параметрами, но из другой сети, желательно из дома, поскольку WebDAV-связь, как правило, не блокируется операторами. Если проверка подтвердила, что локальные администраторы блокируют соединение, то решить проблему можно только через них.
Ошибка 1244 — пользователь не зарегистрирован
Полный текст ошибки: «Запрошенная операция не выполнена, поскольку пользователь не вошел в систему».
Эта ошибка означает, что сервер не получил правильное имя пользователя и пароль. Причины могут быть разные, например ввод неправильного имени или пароля, либо ввод их не в том месте в команде.
Итак, с этой ошибкой я проверяю, что пароль введен правильно и находится между адресом сервера и параметром /user.
Сложности могут возникнуть и в том случае, если пароль содержит специальные символы, имеющие особое значение в командных файлах cmd/bat, поскольку эта часть строки может быть интерпретирована неправильно. Чтобы убедиться в этом, можно попробовать временно указать звездочку вместо пароля, тогда программа будет запрашивать пароль после запуска. Если соединение с паролем по запросу работает, вам следует проверить пароль на наличие недопустимых символов. Например, один из моих паролей содержал символ амперсанда '&', что приводило к ошибке 1244. Нам удалось обойти эту ошибку, заключив пароль в кавычки. Но если в пароле есть кавычки, избежать этого, скорее всего, не удастся.
Действия с хранилищем в командном файле
Как проверить, что хранилище подключено
Может потребоваться проверить, установлено ли соединение и доступен ли сервер в пакетных файлах. Это можно сделать с помощью команды ЕСЛИ СУЩЕСТВУЕТ.
Например, файл cmd/bat для подключения WebDAV проверяет, подключен ли уже диск, а затем немедленно завершает работу:
если существует Y:\* echo Уже подключен. & выход / б 0
Или файл резервной копии cmd/bat перед загрузкой проверяет доступность сетевого диска:
если он не существует Y:\* echo Не подключен. & выход /b 1
Копирование файлов по WebDAV
Из-за буферизации на стороне клиента в стандартном COPY или Explorer данные могут быть потеряны, поэтому рекомендуется использовать XCOPY с отключенной буферизацией и контролируемым размером.
xcopy *.zip y:\backup /Y /Z /V /J
Автоматическое подключение сетевого диска
Возможность автоматического подключения сетевого диска при загрузке компьютера уже есть и включается параметром /persistent:yes (см выше).
Недостатком этого решения является то, что при загрузке компьютера предпринимается только одна попытка монтирования диска. Если в это время не было подключения к сети или сервер был временно недоступен, то диск останется в автономном режиме.
Та же проблема возникает, если вы вставляете только команду подключения при запуске:
net use Y: https://webdav.yandex.ru пароль /пользователь:адрес электронной почты /постоянный:да
Подключение сетевого диска с проверкой и повтором
Чтобы сделать решение более надежным, я использую файл cmd/bat, чтобы проверить вывод и повторить попытку:
@echo off, если существует y:\* echo Уже подключен. & exit /b 0 :connect net use y: https://webdav.yandex.ru пароль /user:nhutils@yandex.ru если errorlevel 1 ping 127.0.0.1 -n 60 & амп;амп;gt; null & иди подключайся
В случае ошибки NET USE попытка подключения повторяется через 1 минуту. Задержка выполняется с помощью ping, см. Как задержать пакетный файл для получения более подробной информации.
Этот пакетный файл можно запустить вручную или путем автоматической загрузки.
Чтобы не мешало черное окно батника, его можно скрыть, запустив через wsh-скрипт, см. Скрытие окна консоли.
Файлы для скачивания
Скрипты подключения WebDAV
Все скрипты и пакетные файлы
См также
WebDAV (распределенная веб-авторизация и управление версиями)
Клиенты облачного хранилища как альтернатива WebDAV
Клиентские программы Cloud Drive позволяют работать с удаленными файлами, не сохраняя их на вашем компьютере.
Как сделать задержку в батнике
Несколько способов запланировать временную задержку в файле bat CMD/BAT: параметры фиксированного времени ожидания ping -n, пакет ресурсов Windows XP sleep.exe и WSH/JScript, а также параметр нажатия клавиши времени ожидания /t.
Доступ к облаку через webdav Теги:bat WebDAV
У меня OneDrive для бизнеса 5тб подключен к win 7 как сетевая папка и почему-то ее размер 145гб, если подключаюсь через AirLiveDrive обычно показывает 100гб ???
Ответ
В Windows для сетевого диска WebDAV размеры (общий размер диска и свободное место) отображаются не для сетевого диска, а для системного диска, например C:. Это происходит со мной так.
Вы можете увидеть правильные размеры в приложении OneDrive.
Ответ
Я что-то не понял через что или с помощью какого WebDAV клиента вы создаете сетевой диск?
Ответ
Отвечаю сам себе, простите за невнимательность, встроенный в Windows 7 веб-клиент.
Ответ
Большое спасибо. Долго искал решение проблемы, когда подключение к диску через интерфейс браузера происходило раньше, чем появилось подключение к интернету. Запустил батник в автозагрузку и проблема решена :)
Ответ
Кто-нибудь сталкивался с такой ошибкой относительно Яндекс.Диска через WebDAV:
«Ошибка копирования из источника: невозможно скопировать файл (121): время ожидания семафора истекло»
Ошибка возникает только при копировании больших файлов, например, около 1 ГБ и более, с помощью SyncBackFree (утилиты резервного копирования). По панели программы копия появляется, что в начале процесса скорость копирования высокая, но постепенно она начинает снижаться, пока не достигнет 0 (примерно через 25 секунд). В этом случае индикатор выполнения останавливается, например, на 2/5 длины и замирает. Это похоже на переполнение буфера.
Раньше эти резервные копии работали нормально, но с декабря 2018 года вдруг начались какие-то проблемы. После переписки с техподдержкой Яндекса я грешил на реализацию протокола WebDAV в Windows 10.
Когда я копирую большой файл вручную, прогресс достигает 99% и зависает.
Еще заметил, что иногда уже не в первый раз могу прочитать свойства файла (дату изменения и размер) в Яндекс.Диске через WebDAV. Точнее в проводнике все отображается списком файлов, но в диалоге Свойства контекстного меню иногда (с первого раза) пусто.
Я увеличивал эти (и не только) параметры в реестре, но это не помогло:
FileSizeLimitInBytes, FsCtlRequestTimeoutInSec.
FileSizeLimitInBytes обычно устанавливает максимум.
Я погуглил, что ошибка "Semaphore timed out" возникает при копировании на внешние устройства через USB, и в этом случае рекомендуется удалить все USB через Диспетчер устройств, а затем снова подключить устройства по одному. Но мой USB вообще не участвует в этой копии.
Ответ
Попробовал сейчас, файл размером 1 Гб загрузился на яндекс.диск из Windows 10 успешно, с первого раза как стандартным копированием в Far Manager, так и через xcopy (с вышеуказанными ключами).
Семафоры — вещь низкого уровня и используются во многих местах, поэтому тайм-аут семафора 121 не объясняет причину.
Причиной может быть даже нестабильный интернет (небольшие потери), когда передача данных прерывается и следующий шаг копирования попадает в таймаут.
Тот факт, что индикатор выполнения неправильно отображает процент выполнения, связан с порядком, в котором файл загружается через WebDAV: сначала он копируется в локальный кеш, а затем загружается по сети.
Первые 99% предназначены для копирования в локальный кеш, поэтому быстро проходят. Именно так это выглядит в Far Manager.
В общем, копирование больших файлов через WebDAV — рискованная задача с точки зрения безопасности данных. Надежнее разбивать бэкап на части по 100-200 Мб, например, и копировать с контролем данных (ключи к xcopy в статье).