Не копируются файлы по webdav

Обновлено: 04.07.2024

В этой статье помогают решить проблему, из-за которой нельзя получить доступ к веб-папке web Distributed Authoring and Versioning (WebDAV) с Windows клиентского компьютера.

Применяется к: Windows 10 — все выпуски, Windows 7 Пакет обновления 1, Windows Server 2012 R2
Исходный номер КБ: 912152

Симптомы

Вы не можете получить доступ к веб-папке WebDAV с Windows клиентского компьютера. При попытке сделать это вы можете испытывать следующие симптомы:

\\server\webfolder\folder недоступен. Возможно, у вас нет разрешения на использование этого сетевого ресурса.
Обратитесь к администратору этого сервера, чтобы узнать, есть ли у вас разрешения на доступ.

Устройство, подключенное к системе, не работает.

ошибка 31 = ERROR_GEN_FAILURE

Диск не отформатирован

Windows не может читать с этого диска. Диск может быть поврежден, или он может использовать формат, который не совместим с Windows.

Кроме того, каждый раз, когда вы пытаетесь получить доступ к веб-папке, потребление памяти увеличивается для процесса Svchost.exe, который содержит службу WebClient. Это увеличение может быть приблизительно 20 мегабайт (МБ) на каждые 20 000 файлов в веб-папке. Память не будет выпущена при остановке службы WebClient. Память будет освобождена только в том случае, если компьютер перезапустится.

Причина

Эта проблема может возникнуть, если все следующие условия верны:

Клиентский компьютер работает с одной из следующих конфигураций:

  • Windows XP с Пакет обновления 1 (SP1) и обновлением 896426
  • Windows XP с пакетом обновления 2 (SP2)
  • Windows XP Professional x64 Edition
  • Windows 7
  • Windows 8
  • Windows 8.1

Папка WebDAV содержит много файлов. Например, папка содержит 20 000 или более файлов. По умолчанию Windows XP будет 1000 файлов в одной веб-папке. Этот номер основан на параметре по умолчанию для следующего подкайки реестра:

  • Путь: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\
  • Значение: FileAttributesLimitInBytes
  • Тип данных: DWORD
  • Значение по умолчанию: 1 000 000 десятичных (1 МБ)
  • Описание. Этот реестр определяет максимальный коллективный размер всех атрибутов файлов в одной папке, разрешенной перенаправлением WebDAV. Это ограничение атрибута охватывает все ответы PROPFIND и PROPPATCH.

Обходной путь

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, см. в этой информации, как создать и восстановить реестр в Windows.

Чтобы решить эту проблему, добавьте запись DWORD с именем FileAttributesLimitInBytes в следующий подкайка реестра:

Настройте значение реестра FileAttributesLimitInBytes до нужного размера, а затем перезапустите службу WebClient. Для этого выполните следующие действия:

Щелкните Пуск, затем Выполнить и введите regedit. Затем нажмите ОК.

Найдите и откройте следующий подраздел реестра:

В меню Правка выберите пункт Создать, а затем Параметр DWORD.

Введите FileAttributesLimitInBytes для имени DWORD и нажмите кнопку ENTER.

Щелкните правой кнопкой мыши FileAttributesLimitInBytes и нажмите кнопку Изменить.

В поле Данных Value введите значение, которое вы хотите использовать, а затем нажмите кнопку ОК. Например, если веб-папка содержит 20 000 файлов, введите 20000000 в поле данных Value.

Если значение по умолчанию составляет 1 000 000 (1 МБ), Windows в одной папке будет 1000 файлов. Фактическое максимальное количество файлов может варьироваться в зависимости от количества атрибутов файлов или свойств файла. По умолчанию служба WebClient не требует определенных свойств WebDAV. Таким образом, сервер возвращает все атрибуты файла. Перенаправление веб-Microsoft Office веб-ведрами действительно требует определенных свойств WebDAV.

Закройте редактор реестра.

Остановите и перезапустите службу WebClient. Для этого выполните следующие действия:

Облачные хранилища данных становятся всё более востребованными, как среди частных пользователей, так и среди компаний. При этом некоторые интернет сервисы хранения файлов предоставляют возможность доступа к своему облаку по протоколу 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 для Яндекс.Диска:

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

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

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


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

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

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

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

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

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

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

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

Для решения этих проблем можно попробовать изменить параметры клиента, как это описано ниже, подробнее см. в статье 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 с отключением буферизации:

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

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

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

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

Таймаут

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также


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

Читайте также: