Como faço para copiar/baixar recursivamente um diretório webdav inteiro?

Como faço para copiar/baixar recursivamente um diretório webdav inteiro?

Quando tento copiar uma pasta de um servidor webdav para um disco local usando o Nautilus, ele copia o que parece ser um arquivo de manifesto (xml com a listagem de diretórios, etc.). Com cadáver recebo um arquivo vazio.

Gostaria de poder copiar recursivamente uma árvore de diretórios inteira. Alguém sabe como posso fazer isso?

ps: estou usando Ubuntu 11.04 com Nautilus 2.32.2.1 e Cadaver 0.23.3

Responder1

Esta resposta resume as sugestões dadas nos comentários de @Ocaso e @Rinzwind.

Eu usei isso:

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

Não é perfeito (baixei muitos 'index.html?C=M;O=D' e similares), mas funcionou bem.

O "-r" é baixado recursivamente, seguindo links.

O "-np" impede a subida aos diretórios pais (caso contrário você baixa o site inteiro!).

O "-nH" impede a criação de um diretório chamado "my-host" (o que eu não queria).

O "--cut-dirs=1" impede a criação de um diretório chamado "my-webdav-dir".

O "--no-check-certificate" ocorre porque estou usando um certificado autoassinado no servidor webdav (também estou forçando https).

O "-U Mozilla" define o agente do usuário na solicitação http como "Mozilla" - meu servidor webdav realmente não precisava disso, mas eu o incluí mesmo assim.

Responder2

Alternativamente, você pode montá-lo como um caminho para ser acessado como parte do seu próprio sistema de arquivos.

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

Nota: /your/local/mount/pointdeve haver um diretório real existente para que isso funcione.

Pelo que eu sei, você só precisa executar o seguinte para que o comando funcione: sudo apt-get install davfs2(Se for necessária mais configuração, peço desculpas, já faz muito tempo que fiz isso.)

(Adicionei isso como resposta porque sinto que a resposta de Liam não forneceu informações suficientes.)

Responder3

Sei que esta é uma pergunta antiga, mas eu estava querendo fazer isso e encontreicloneque é como o rsync para a nuvem e suporta vários protocolos diferentes, incluindo WebDAV. Você usa rclone configpara configurar um controle remoto e depois é só fazer rclone copy remote:path .e o int irá baixar tudo. Você também pode usar rclone sync remote:path .e fará a verificação dos arquivos e apenas copiará as atualizações. É um programa golang, por isso é muito portátil.

Responder4

Você pode usar dav2fs para montar o servidor webdav e então acessá-lo como faria com um diretório local.

informação relacionada