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

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

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

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

附言:我使用的是 Ubuntu 11.04,带有 Nautilus 2.32.2.1 和 Cadaver 0.23.3

答案1

这个答案总结了@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 服务器实际上并不需要这个,但我还是将它包含在内了。

答案2

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

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

注意:/your/local/mount/point必须是一个真实存在的目录才能正常工作。

据我所知,您只需运行以下命令即可使命令正常工作:( sudo apt-get install davfs2如果需要更多配置,我很抱歉,这是我很久以前做的。)

(我将其添加为答案是因为我觉得 Liam 的答案没有提供足够的信息。)

答案3

我意识到这是一个老问题,但我想这样做,我发现克隆它类似于云的 rsync,支持许多不同的协议,包括 WebDAV。您可以使用它rclone config来配置远程,然后只需执行rclone copy remote:path .int 即可下载所有内容。您还可以使用它rclone sync remote:path .,它将检查文件并仅复制更新。它是一个 golang 程序,因此非常便携。

答案4

您可以使用 dav2fs 来挂载 webdav 服务器,然后就可以像访问本地目录一样访问它。

相关内容