如何递归复制/下载整个webdav目录?


9

当我尝试使用Nautilus将文件夹从webdav服务器复制到本地磁盘时,它会复制清单文件(带有目录列表等的xml)。使用尸体,我得到一个空文件。

我希望能够递归复制整个目录树。有人知道我该怎么做吗?

ps:我将Ubuntu 11.04与Nautilus 2.32.2.1和Cadaver 0.23.3结合使用


您需要带有GUI的工具还是wget对您“足够好”?
奥卡索·普罗塔尔(Ocaso Protal)2012年

我偷看了wget,但它并没有声称要做webdav ...如果这样做的话,它将对我
有用

2
试试这个:wget --user = {用户名} --password = {password} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http:// {website}如果可行,请添加作为答案;)
Rinzwind'2

1
但是webdav只是简单的https,因此wget应该可以工作。快速的Google搜索使我获得了astron.nl/northstar/nswiki/lib/exe/…以便通过webdav快速了解wget
Ocaso Protal 2012年

1
有趣的..当我将其指向一个webdav目录/集合时,它会抓取该目录的html文件(即:将其中的内容列表作为网页)然后抱怨:“ localhost / webdav / calibre-library:不是目录localhost /webdav/calibre-library/index.html:不是目录”。当我指出它在WebDAV的根,其相当随机...结束了在开始下载whold Web服务器。注意,这是仅HTTPS和自签署的,所以我不得不添加“--no检查证书”
drevicko 2012年

Answers:


3

该答案总结了@Ocaso和@Rinzwind在评论中给出的建议。

我用这个:

wget -r -nH -np --cut-dirs=1 --no-check-certificate -U Mozilla --user={uname} 
    --password={pwd} https://my-host/my-webdav-dir/my-dir-in-webdav

并不完美(下载了很多'index.html?C = M; O = D'之类的东西),但其他方法还可以。

“ -r”通过以下链接递归下载。

“ -np”防止升至父目录(否则您将下载整个网站!)。

“ -nH”阻止创建名为“ my-host”的目录(我不想要)。

“ --cut-dirs = 1”阻止创建名为“ my-webdav-dir”的目录。

“ --no-check-certificate”是因为我在webdav服务器上使用了自签名证书(我也强制使用https)。

“ -U Mozilla”将http请求中的用户代理设置为“ Mozilla”-我的webdav服务器实际上不需要此代理,但无论如何我都包含了它。


使用它从nextcloud下载文件时,它的确下载了具有以下内容的文件:This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.。知道为什么会这样吗?
Micromegas

我的猜测是nextcloud期望一个看起来像WebDAV客户端的用户代理(而不是浏览器Mozilla)。如果您有他们的客户端和一个数据包嗅探器(例如:wireshark),则可以找出它在请求中使用的用户代理。
drevicko

或者发现它的用户代理可以是“Mozilla的/ 5.0(安卓)Nextcloud-的Android / 3.8.0”从网络
drevicko

非常感谢drevicko!我会做的
Micromegas

也在这里。祝好运!
drevicko

3

实际上,使用Cadaver,您可以cd进入要从中下载文件和目录的目录mget *


2
为了这是一个有用的答案,您需要告诉用户如何执行此操作。
RolandiXor

1
嗯,mget * .在文件夹中或mget foldername导致501 Not Implemented。在box.com上真的对您有用吗?
亚历山大

@Wurstsalat您不能放多余的'。; 它也以文件名作为参数,因此您需要执行“ mget foldername / filename”。
JasoonS

当有子目录(递归部分)时,这对我不起作用。
Radon Rosborough

3

您可以使用dav2fs挂载webdav服务器,然后可以像访问本地目录一样对其进行访问。


也使用此方法,轻松访问文件和文件夹
bobbyrne01

而且,与其他方法相比,该方法最慢,并且不会总是起作用(与文件名相关的错误)。
alexanderadam

3

或者,您可以将其安装为路径,作为您自己的文件系统的一部分进行访问。

sudo mount -t davfs https://your.remote/path /your/local/mount/point

注意:/your/local/mount/point必须是实际存在的目录,此目录才能起作用。

据我所知,您只需要运行以下命令即可使该命令起作用:( sudo apt-get install davfs2如果抱歉,需要更多配置,我很久以前就这样做了。)

(我将此添加为答案,因为我觉得利亚姆的答案提供的信息不足。)


使用sudo下载文件听起来并不正确。
Equidamoid18年

1
@Equidamoid挂载文件系统需要root用户访问权限,因为在某些情况下它可以允许您绕过本地UNIX权限。
Radon Rosborough
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.