Je suis confronté à une situation assez simple, je dois télécharger, tel quel, une grande arborescence de fichiers sur un serveur WebDAV accessible via HTTPS. Je dois commencer le téléchargement à partir d'une boîte Linux avec la ligne de commande uniquement. Je peux installer des programmes sur la box.
J'ai essayé Cadaver mais il ne prend pas en charge le téléchargement de répertoire récursif.
Connaissez-vous des outils / scripts simples pour y parvenir?
Ok, j'ai trouvé quelque chose qui l'a fait.
Je suis parti du davpush.pl
script qui se trouve ici https://github.com/ptillemans/davpush
Quelques changements étaient nécessaires:
- remplacer tous les "
dav://
" par "https://
" - ajouter "
print POUT "open";
" avant "print POUT $script;
"
Merde, avoir à pirater un script Perl pour télécharger simplement un répertoire qui est grossier. Je cherche toujours des outils / scripts simples.
la source
Voici un script shell rapidement piraté qui permet de le faire en utilisant cadaver :
S'il est nommé,
davcpy.sh
une commande commepermet une copie récursive de
dans une télécommande nommée
Notez qu'il utilise la fonction de script de
cadaver
pour permettre toujours la saisie interactive des identifiants / mots de passe. Je pense qu'il est également assez robuste pour gérer des noms de fichiers et de répertoires étranges contenant des espaces, mais je n'ai testé aucun cas comme celui-ci.la source
Une solution pourrait être Rclone . Il s'agit d'un programme de synchronisation en ligne de commande à sens unique, similaire à rsync, qui prend en charge WebDAV (entre autres). Il peut copier récursivement un répertoire, en ignorant les fichiers qui existent sur la destination. Il dispose de certaines options de ligne de commande pour contrôler le comportement de synchronisation, par exemple, si vous souhaitez que les fichiers cibles soient supprimés s'ils sont partis de la source. Il existe des packages disponibles pour de nombreuses distributions, mais vous pouvez également installer et exécuter le binaire ordinaire. La première fois, vous devrez définir une "télécommande":
Après cela, vous pouvez copier ou synchroniser des fichiers et des répertoires:
la source
Une modification de la réponse de nberth qui fonctionne sur OSX:
L'usage est le même. Citant la réponse de nberth:
la source
Je suis sur Ubuntu Linux. À l'aide de fuse, (Filesystem in Userspace) et mountdavfs (davfs2), vous pouvez monter un sous-répertoire sur le serveur Webdav en tant que dossier local.
Ouvrez votre terminal et procédez comme suit:
Installez davfs2 s'il n'existe pas déjà:
sudo apt-get install davfs2
Connectez-vous au serveur Webdav:
sudo mount.davfs -o user=knb,rw https://webdav.site.de/data /mnt/somedir
(Le propriétaire du système de fichiers doit être entré, sinon aucun droit d'écriture n'est présent)
De plus, je devais entrer ces lignes dans
/etc/dafs2/davfs2.conf
:voir https://bugs.launchpad.net/ubuntu/+source/davfs2/+bug/466960
mount
- Commande - Résultat (Dernière ligne de sortie):https://webdav.mysite.de/icdp on /media/somedir type fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=0,allow_other,max_read=16384,uid=1000,gid=0,helper=davfs)
Vérifiez également s'il existe un fichier étrange
~/.davfs2/secrets
- peut-être nécessaire, pour les montages permanents qui survivent aux redémarrages.Maintenant , vous pouvez ISSU commandes comme
cp -vr /data/myphotos /media/somedir
et les fichiers sont copiés récursive et téléchargés sur le site webdav.la source