Come posso copiare / scaricare in modo ricorsivo un'intera directory webdav?


9

Quando provo a copiare una cartella da un server webdav su un disco locale usando Nautilus, copia ciò che sembra essere un file manifest (xml con l'elenco delle directory ecc.). Con cadavere ottengo un file vuoto.

Vorrei essere in grado di copiare in modo ricorsivo un intero albero di directory. Qualcuno sa come posso farlo?

ps: sto usando Ubuntu 11.04 con Nautilus 2.32.2.1 e Cadaver 0.23.3


Hai bisogno di uno strumento con una GUI o wget è "abbastanza buono" per te?
Ocaso Protal,

Ho dato una sbirciatina a wget, e non pretendeva di fare webdav ... Funzionerebbe per me se lo facesse
drevicko

2
Prova questo: wget --user = {username} --password = {password} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http: // {website} Se funziona Ill aggiungilo come risposta;)
Rinzwind

1
Ma webdav è semplicemente https, quindi wget dovrebbe funzionare. una rapida ricerca su google mi ha dato astron.nl/northstar/nswiki/lib/exe/… per avere una rapida panoramica su wget con webdav
Ocaso Protal,

1
interessante .. quando lo indico a una directory / raccolta webdav, prende il file html per quella directory (cioè: con l'elenco delle cose lì come una pagina web) poi si lamenta: "localhost / webdav / calibre-library: non un directorylocalhost /webdav/calibre-library/index.html: non una directory ". Quando lo indico alla radice di webdav, è piuttosto casuale ... finisce per iniziare a scaricare il web server whold .. Nota che è solo https e autofirmato, quindi ho dovuto aggiungere '--no-check-certificate'
drevicko,

Risposte:


3

Questa risposta riassume i suggerimenti forniti nei commenti di @Ocaso e @Rinzwind.

Ho usato questo:

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

Non perfetto (scaricato un sacco di 'index.html? C = M; O = D' e simili) ma per il resto ha funzionato bene.

Il "-r" si scarica ricorsivamente, seguendo i collegamenti.

"-Np" impedisce di salire alle directory principali (altrimenti si scarica l'intero sito Web!).

"-NH" impedisce la creazione di una directory chiamata "my-host" (che non volevo).

"--Cut-dirs = 1" impedisce la creazione di una directory chiamata "my-webdav-dir".

Il "--no-check-certificate" è perché sto usando un certificato autofirmato sul server webdav (sto anche forzando https).

"-U Mozilla" imposta l'agente utente nella richiesta http su "Mozilla" - il mio server webdav in realtà non ne aveva bisogno, ma l'ho incluso comunque.


L'utilizzo di questo per scaricare un file da nextcloud lo fa scaricare un file con il contenuto: This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. Qualche idea sul perché ciò accada?
Micromegas,

La mia ipotesi è che nextcloud si aspetti un agente utente che assomigli a un client WebDAV (al contrario di Mozilla, che è un browser). Se hai il loro client e uno sniffer di pacchetti (ad es. WireShark) puoi scoprire quale agente utente usa nelle sue richieste.
drevicko,

In alternativa, scopri che il suo agente utente potrebbe essere "Mozilla / 5.0 (Android) Nextcloud-android / 3.8.0" dal Web .
drevicko,

Grazie mille drevicko !! Lo farò
Micromegas il

Anche qui . In bocca al lupo!
drevicko,

3

In realtà con Cadaver è possibile accedere cdalla directory da cui si desidera scaricare file e mget *.


2
Perché questa sia una risposta utile, devi dire all'utente come farlo.
RolandiXor

1
Hm, mget * .in una cartella o mget foldernamerisulta in 501 Not Implemented. Ha funzionato davvero per te su box.com?
alexanderadam,

@Wurstsalat Non devi aggiungere un extra "." ; inoltre prende i nomi dei file come argomenti, quindi dovrai fare `mget foldername / nomefile '.
JasoonS,

Questo non funziona per me quando ci sono sottodirectory (la parte ricorsiva ).
Radon Rosborough,

3

Puoi usare dav2fs per montare il server webdav, e poi puoi accedervi come faresti con una directory locale.


usa anche questo metodo, un facile accesso a file e cartelle
bobbyrne01

E questo metodo è il più lento rispetto ad altri e non funzionerà sempre (bug relativi a nome-scoiattoli).
alexanderadam,

3

In alternativa è possibile montarlo come percorso a cui accedere come parte del proprio file system.

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

Nota: /your/local/mount/pointdeve essere una vera directory esistente affinché funzioni.

Per quanto ne so, per far funzionare il comando è sufficiente eseguire quanto segue: sudo apt-get install davfs2(Se chiedo più configurazione, mi scuso, è stato tanto tempo fa che l'ho fatto.)

(L'ho aggiunto come risposta perché ritengo che la risposta di Liam non abbia fornito abbastanza informazioni.)


usare sudoper scaricare un file non suona davvero bene.
Equidamoide,

1
@Equidamoid Il montaggio di filesystem richiede l'accesso come root perché in alcuni casi può consentire di ignorare le autorizzazioni UNIX locali.
Radon Rosborough,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.