Comment copier / télécharger récursivement un répertoire webdav entier?

9

Lorsque j'essaie de copier un dossier d'un serveur webdav sur un disque local à l'aide de Nautilus, il copie ce qui semble être un fichier manifeste (xml avec la liste des répertoires, etc.). Avec cadaver, j'obtiens un fichier vide.

Je voudrais pouvoir copier récursivement toute une arborescence de répertoires. Est-ce que quelqu'un sait comment je peux faire ça?

ps: j'utilise Ubuntu 11.04 avec Nautilus 2.32.2.1 et Cadaver 0.23.3

drevicko
la source
Avez-vous besoin d'un outil avec une interface graphique ou est wget "assez bon" pour vous?
Ocaso Protal le
J'ai jeté un œil à wget, et il ne prétendait pas faire webdav ... Cela fonctionnerait pour moi s'il le faisait
drevicko
2
Essayez ceci: wget --user = {nom d'utilisateur} --password = {mot de passe} --wait = 20 --limit-rate = 20K -r -p -U Mozilla http: // {site Web} Si cela fonctionne, ajoutez-le comme réponse;)
Rinzwind
1
Mais webdav est tout simplement https, donc wget devrait fonctionner. une recherche rapide sur google m'a donné astron.nl/northstar/nswiki/lib/exe/… pour obtenir un aperçu rapide sur wget avec webdav
Ocaso Protal
1
intéressant .. quand je le pointe vers un répertoire / collection webdav, il saisit le fichier html pour ce répertoire (c'est-à-dire: avec la liste des choses là-bas en tant que page Web) puis se plaint: "localhost / webdav / calibre-bibliothèque: pas un répertoirelocalhost /webdav/calibre-library/index.html: Pas un répertoire ". Quand je le pointe vers la racine webdav, c'est plutôt aléatoire ... finit par commencer à télécharger le serveur Web entier .. Notez que c'est https uniquement et auto-signé, j'ai donc dû ajouter '--no-check-certificate'
drevicko

Réponses:

3

Cette réponse résume les suggestions données dans les commentaires de @Ocaso et @Rinzwind.

J'ai utilisé ceci:

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

Pas parfait (beaucoup téléchargés de 'index.html? C = M; O = D' et similaires) mais sinon fonctionnait bien.

Le "-r" se télécharge récursivement, en suivant les liens.

Le "-np" empêche de remonter aux répertoires parents (sinon vous téléchargez tout le site!).

Le "-nH" empêche de créer un répertoire appelé "mon-hôte" (ce que je ne voulais pas).

Le "--cut-dirs = 1" empêche la création d'un répertoire appelé "my-webdav-dir".

Le "--no-check-certificate" est dû au fait que j'utilise un certificat auto-signé sur le serveur webdav (je force également https).

Le "-U Mozilla" définit l'agent utilisateur dans la requête http sur "Mozilla" - mon serveur webdav n'en avait pas réellement besoin, mais je l'ai quand même inclus.

drevicko
la source
L' utilisation de ce pour télécharger un fichier de nextcloud il ne télécharge un fichier avec le contenu: This is the WebDAV interface. It can only be accessed by WebDAV clients such as the Nextcloud desktop sync client.. Une idée pourquoi cela se produit?
Micromegas
Je suppose que nextcloud attend un agent utilisateur qui ressemble à un client WebDAV (par opposition à Mozilla, qui est un navigateur). Si vous avez leur client et un renifleur de paquets (par exemple: cableshark), vous pouvez savoir quel agent utilisateur il utilise dans ses requêtes.
drevicko
Vous pouvez également découvrir que son agent utilisateur peut être "Mozilla / 5.0 (Android) Nextcloud-android / 3.8.0" sur le Web .
drevicko
Merci beaucoup drevicko !! Je vais le faire
Micromegas
Ici aussi . Bonne chance!
drevicko
3

En fait, avec Cadaver, vous pouvez cddans le répertoire à partir duquel vous souhaitez télécharger les fichiers et mget *.

viktor denischik
la source
2
Pour que cette réponse soit utile, vous devez indiquer à l'utilisateur comment procéder.
RolandiXor
1
Hm, mget * .dans un dossier ou mget foldernamerésulte en 501 Not Implemented. Cela a-t-il vraiment fonctionné pour vous sur box.com?
alexanderadam
@Wurstsalat Vous ne devez pas mettre le supplément '.' ; il prend également les noms de fichiers comme arguments, vous devrez donc faire `mget nom_fichier / nom_fichier '.
JasoonS
Cela ne fonctionne pas pour moi quand il y a des sous-répertoires (la partie récursive ).
Radon Rosborough
3

Vous pouvez utiliser dav2fs pour monter le serveur webdav, puis vous pouvez y accéder comme vous le feriez pour un répertoire local.

Liam
la source
utilisez également cette méthode, un accès facile aux fichiers et dossiers
bobbyrne01
Et cette méthode est la plus lente par rapport aux autres et ne fonctionnera pas toujours (bugs liés aux nom de fichier-squirks).
alexanderadam
3

Vous pouvez également le monter en tant que chemin d'accès accessible dans le cadre de votre propre système de fichiers.

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

Remarque: /your/local/mount/pointdoit être un véritable répertoire existant pour que cela fonctionne.

Pour autant que je sache, il vous suffit d'exécuter ce qui suit pour que la commande fonctionne: sudo apt-get install davfs2(Si plus de configuration est requise, je m'excuse, cela fait longtemps que je l'ai fait.)

(J'ai ajouté cela comme réponse parce que je pense que la réponse de Liam n'a pas donné suffisamment d'informations.)

JasoonS
la source
utiliser sudopour télécharger un fichier ne sonne pas vraiment bien.
Equidamoid
1
@Equidamoid Le montage de systèmes de fichiers nécessite un accès root car il peut vous permettre de contourner les autorisations UNIX locales dans certains cas.
Radon Rosborough