web-dev-qa-db-fra.com

Télécharger le fichier à partir de FTP en utilisant cURL

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?

18
Josiah

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.

24
grawity
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.

2
cUrly Stooge

Essayer:

curl "ftp://user:password@myftpsite/users/myfolder/myfile.raw"

(Si le nom du fichier distant est 'myfile.raw')

0
yan

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.

0
Dan