我需要一个可以进行 WebDAV 上传(HTTP PUT)的命令行实用程序。
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
如果您需要通过 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 中的占位符
{}
。因此它发出多个请求(每个文件一个),并且由于所有嵌套文件夹都是提前创建的 - 这些请求不应该失败。
希望对某人有帮助。
免费 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的作者)
另一个选项是“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
在 KDE 下使用 KIO:
kioclient cp file.txt 'webdavs://[email protected]:443/'
要进行任意目录结构的 WebDAV 递归上传(文件夹内的文件等),工具 Rclone 对我有用。
基于 SuperUser 上的这个答案,我能够通过执行以下操作递归复制目录:
rclone config create my-remote webdav \
url https://my-webdav-server/my-dir/ \
vendor other \
user 'username'
rclone config password pass 'mypasswd'
rclone copy /home/me/mydir my-remote:
Rclone 提供了许多其他处理文件的模式,包括
sync
,它通过删除本地不存在的远程文件(除了复制远程不存在的本地文件之外)使远程与本地副本保持一致。有关详细信息,请参阅 Rclone 的子命令。
Teleric Fiddler 有一个“撰写”选项卡,您可以在其中创建您的 自己定制的 WebDAV 请求。例如。 PROPFIND 和 OPTIONS 等