Утилита командной строки для загрузки WebDAV

Мне нужна утилита командной строки, которая может выполнять загрузку WebDAV (HTTP PUT).


person rperez    schedule 30.07.2009    source источник


Ответы (9)


cURL сделает это за вас.

curl -T filetoput.xml http://www.url.com/filetoput.xml
person Mike McQuaid    schedule 30.07.2009
comment
В случае WebDAV ваш пример не будет работать без очень маленькой, но важной детали — › включить имя файла, который вы хотите иметь на удаленном компьютере. Итак: curl -T filetoput.xml url.com/filetoput.xml - person Cninroh; 07.06.2012
comment
@Cninroh: я не верю, что это правда. Согласно man-странице curl: если в указанном URL-адресе нет файловой части, Curl добавит имя локального файла. ЗАМЕТЬТЕ, что вы должны использовать конечный / в последнем каталоге, чтобы действительно доказать Curl, что имени файла нет, иначе curl будет думать, что ваше последнее имя каталога является именем удаленного файла для использования. - person Jeff Gran; 03.10.2012
comment
+1, cURL за победу. И если вам нужно пройти аутентификацию, вы можете использовать curl -T <filename> -u <username>:<password> <url>. - person Amos M. Carpenter; 03.06.2015
comment
вы также можете использовать -o /dev/stdout для получения вывода прогресса - person simao; 09.10.2015
comment
гениальные мастера вундеркинды - person yosefrow; 25.05.2017
comment
На самом деле, исключение файловой части из целевого URL-адреса приводит к ошибке HTTP 409 CONFLICT, если целевой сервер является сервером IIS, по крайней мере, до IIS 10 включительно. Возможно, IIS ошибается, и он должен работать в соответствии со спецификациями, просто говоря. - person Jonas; 27.04.2018

Для Unix (и Windows с установленным Cygwin) вы можете использовать Труп

person Matthew Lock    schedule 30.07.2009

Наиболее часто используемой HTTP-утилитой командной строки является cURL, которая будет выполнять PUT с ее -T вариант. Однако вам нужно немного понимать протокол WebDAV, чтобы делать с ним больше, чем просто загружать файлы.

person Carey    schedule 30.07.2009

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

Представьте, что у вас есть следующая локальная папка, которую вы собираетесь загрузить через WebDAV.

local_folder_to_upload
│   test.txt
│   test1.txt    
│
└───nested_folder1
│   │   file1.txt
│   │   file2.txt
│   │
│   └───nested_folder2
│       │   file11.txt
│       │   file12.txt

1. Сначала вам нужно создать вложенные каталоги из вашей локальной папки (если они у вас есть) на сервере. Поскольку WebDAV не поддерживает рекурсивную загрузку, вы должны сделать это на отдельном шаге (если вы использовали ftp - вы добавил бы флаг --ftp-create-dirs для этого). Чтобы создать эти папки через WebDAV, вам нужно использовать метод MKCOL.

curl -X MKCOL 'http://your.server/uploads/nested_folder1' --user 'name:pwd'
curl -X MKCOL 'http://your.server/uploads/nested_folder1/nested_folder2' --user 'name:pwd'

Обратите внимание, что вы не можете создать их в одном запросе в соответствии с к спецификации.

если сделан запрос на создание коллекции /a/b/c/d/, а /a/b/c/ не существует, запрос должен завершиться ошибкой.

2. Во-вторых, вы можете использовать вывод найти команду оболочки, чтобы загрузить ее на ваш сервер, используя curl.

cd local_folder_to_upload && find . -exec curl -T {} 'http://your.server/uploads/{}' --user 'name:pwd' \;

Код выше перебирает все ваши файлы в заданном каталоге (используя find) и добавляет вывод (имя файла с относительным путем) в заполнитель {} в URL-адресе вашего веб-сервера. Таким образом, он делает несколько запросов (по одному на каждый файл), и, поскольку все вложенные папки были созданы заранее, эти запросы не должны завершаться ошибкой.

Надеюсь, кому-то это будет полезно.

person Artyom Pranovich    schedule 11.11.2018

Бесплатный WinSCP (для Windows) поддерживает WebDAV (и WebDAVS).
WinSCP также поддерживает сценарии и операции командной строки. .

Пример сценария WinSCP для загрузки файла через WebDAV:

open https://[email protected]/
put file.txt /path/
exit

Сохраните скрипт в файл (например, script.txt) и запустите так:

winscp.com /script=script.txt

Вы также можете поместить все в одну строку:

winscp.com /command "open https://[email protected]/" "put file.txt /path/" "exit"

Начните с введения в создание сценариев с помощью WinSCP.

Вы даже можете настроить графический интерфейс WinSCP для создания файла сценария.

(я автор WinSCP)

person Martin Prikryl    schedule 29.07.2014

Другой вариант — «Дэвикс».

https://dmc.web.cern.ch/projects/davix/home

он имеет отдельные утилиты, такие как davix-mkdir davix-put и т. д. Вы можете указать кредиты в URL-адресе, например

 davix-mkdir http://user:[email protected]/dir_to_create
 davix-put local_file http://user:[email protected]/dir_to_create/remote_file_name
person xoid    schedule 26.11.2014

этот обзор содержит полный список серверов и клиентов webdav.

Я бы выбрал труп или, если мои потребности были очень конкретными, скрипт Python, использующий библиотека PyWebDAV.

person Steen    schedule 30.07.2009

Используйте KIO в KDE:

kioclient cp file.txt 'webdavs://[email protected]:443/'
person kolypto    schedule 20.04.2012

Teleric Fiddler имеет вкладку «Создать», где вы можете создать свой собственный запрос WebDAV. Например. PROPFIND и ВАРИАНТЫ и т.д.

person user5101998    schedule 18.06.2019