J'essaie d'utiliser une commande cURL pour télécharger un fichier d'un serveur FTP sur un lecteur local de mon ordinateur. J'ai essayé
curl " ftp: // myftpsite " - nom d'utilisateur: mot de passe -Q "CWD/utilisateurs/mon dossier /" -O "monfichier.raw"
Mais cela renvoie une erreur qui dit:
curl: le nom du fichier distant n'a pas de longueur!
curl: essayez 'curl --help' ou 'curl --manual' pour plus d'informations
curl: (6) Impossible de résoudre Host: myfile.raw; Aucun enregistrement de données du type demandé
J'ai essayé d'autres méthodes, mais rien ne semble fonctionner.
De plus, je ne sais pas trop comment spécifier le dossier dans lequel je souhaite télécharger le fichier. Comment je ferais ça?
Essayer
curl -u user:password 'ftp://mysite/%2fusers/myfolder/myfile/raw' -o ~/Downloads/myfile.raw
Dans les URL FTP, le chemin est relatif au répertoire de départ (généralement votre répertoire personnel). Vous devez spécifier un chemin absolu, ce qui signifie que vous devez utiliser %2f
pour spécifier /
. Cela est nécessaire car le chemin dans les URL ftp:
est traité comme une liste de noms séparés par des barres obliques , chacun d'entre eux étant censé être attribué à une CWD
séparée commander. Le %2f
est décodé après le fractionnement . Voir RFC 1738 et URL FTP .
En ce qui concerne l'emplacement de sortie, indiquez simplement un chemin d'accès à -o
.
Suggestions de sécurité:
Ne mettez pas votre mot de passe dans l'URL. Le stocker dans ~/.netrc
n'est pas particulièrement sécurisé non plus, mais il est au moins caché de ps -ef
.
Votre mot de passe est envoyé en texte clair. Si le serveur le prend en charge, utilisez curl --ssl-reqd
ou curl ftps://mysite/...
Utiliser SFTP (le protocole de transfert de fichiers SSH) serait encore mieux.
curl -T /users/myfolder/myfile.raw -u username:password "ftp://myftpsite/path/myfile.raw"
Je l'utilise tout le temps. Il fonctionne comme un charme.
Essayer:
curl "ftp://user:password@myftpsite/users/myfolder/myfile.raw"
(Si le nom du fichier distant est 'myfile.raw')
Comme yan suggère,
curl " ftp: // utilisateur: motdepasse@myftpsite/users/myfolder/myfile.raw "
devrait fonctionner, mais certains serveurs FTP utilisent des politiques de sécurité non conformes aux normes. Dans ces cas, l'option --ftp-method singlecwd
ou --ftp-method nocwd
peut aider.