WebDAV 上传的命令行实用程序

问题描述 投票:0回答:10

我需要一个可以进行 WebDAV 上传(HTTP PUT)的命令行实用程序。

webdav
10个回答
104
投票

cURL 会为你做。

curl -T filetoput.xml http://www.url.com/filetoput.xml

工作示例:

curl -T pic.jpg -u [email protected]:longapppass https://webdav.cloud.server.com:443

16
投票

对于 unix(和安装了 Cygwin 的 Windows),您可以使用 Cadaver


9
投票

最常用的命令行 HTTP 实用程序似乎是 cURL,它将使用其

-T 选项
PUT。不过,您需要了解相当多的 WebDAV 协议,才能使用它进行上传以外的操作。


6
投票

如果您需要通过 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.其次,您可以利用 find shell 命令的输出,使用

curl
将其上传到您的服务器。

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

上面的代码遍历给定目录中的所有文件(使用查找)并将输出(具有相对路径的文件名)添加到网络服务器 url 中的占位符

{}
。因此它发出多个请求(每个文件一个),并且由于所有嵌套文件夹都是提前创建的 - 这些请求不应该失败。

希望对某人有帮助。


5
投票

免费 WinSCP(适用于 Windows)支持 WebDAV(和 WebDAVS)。
WinSCP 也支持脚本/命令行操作。

通过 WebDAV 上传文件的示例 WinSCP 脚本:

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 GUI 为您生成脚本文件.

(我是WinSCP的作者)


5
投票

另一个选项是“davix”

https://davix.web.cern.ch/davix/docs/devel/

可以安装

sudo yum install davix
(红帽) 或者
sudo apt install davix
(Ubuntu)

它有分离的实用程序,如 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

3
投票

此概述包含 webdav 服务器和客户端的完整列表。

我会选择尸体,或者,如果我的需求非常具体,我会选择使用 PyWebDAV 库的 python 脚本。


3
投票

在 KDE 下使用 KIO:

kioclient cp file.txt 'webdavs://[email protected]:443/'

2
投票

要进行任意目录结构的 WebDAV 递归上传(文件夹内的文件等),工具 Rclone 对我有用。

基于 SuperUser 上的这个答案,我能够通过执行以下操作递归复制目录:

  1. 配置连接:
     rclone config create my-remote webdav \
         url https://my-webdav-server/my-dir/ \
         vendor other \
         user 'username'
    
     rclone config password pass 'mypasswd'
    
  2. 复制:
    rclone copy /home/me/mydir my-remote:
    

Rclone 提供了许多其他处理文件的模式,包括

sync
,它通过删除本地不存在的远程文件(除了复制远程不存在的本地文件之外)使远程与本地副本保持一致。有关详细信息,请参阅 Rclone子命令。


0
投票

Teleric Fiddler 有一个“撰写”选项卡,您可以在其中创建您的 自己定制的 WebDAV 请求。例如。 PROPFIND 和 OPTIONS 等

© www.soinside.com 2019 - 2024. All rights reserved.