Herunterladen von Dateien von FTP mit cURL

Ich versuche, mit einem cURL-Befehl eine Datei von einem FTP-Server auf ein lokales Laufwerk auf meinem Computer herunterzuladen. Ich habe versucht

Curl "ftp://myftpsite "--Benutzername: Passwort-Q " CWD/users/ myfolder / "- O "myfile.raw"

Aber es gibt einen Fehler zurück, der besagt:

Curl: Remote Dateiname hat keine Länge!
curl: Versuchen Sie 'curl --help 'oder' curl --manual ' für weitere Informationen
curl: (6) host: myfile konnte nicht aufgelöst werden.roh; Keine Daten Datensatz des angeforderten Typs

Ich habe einige andere Methoden ausprobiert, aber nichts scheint zu funktionieren.

Außerdem bin ich mir nicht ganz sicher, in welchen Ordner die Datei heruntergeladen werden soll. Wie würde ich das tun?

Author: studiohack, 2011-03-31

4 answers

Versuchen

curl -u user:password 'ftp://mysite/%2fusers/myfolder/myfile/raw' -o ~/Downloads/myfile.raw

In FTP-URLs ist der Pfad relativ zum Startverzeichnis (normalerweise Ihrem Homedir). Sie müssen einen absoluten Pfad angeben, und das bedeutet, dass Sie %2f verwenden, um / anzugeben. Dies ist erforderlich, da der Pfad in ftp: URLs als eine Liste von durch Schrägstriche getrennten Namen behandelt wird, von denen jeder einem separaten Befehl CWD gegeben werden soll. Das %2f wird nach dem Teilen von dekodiert. Siehe RFC 1738 und FTP URLs.

Geben Sie für den Ausgabeort einfach einen Pfad zu -o an.


Sicherheitsvorschläge:

  • Geben Sie Ihr Passwort nicht in die URL ein. Das Speichern in ~/.netrc ist ebenfalls nicht besonders sicher, aber es ist zumindest vor ps -ef verborgen.

  • Ihr Passwort wird im Klartext gesendet. Wenn der Server dies unterstützt, verwenden Sie curl --ssl-reqd oder curl ftps://mysite/...

  • Die Verwendung von SFTP (dem SSH-Dateiübertragungsprotokoll) wäre gleichmäßig verbessern.

 32
Author: user1686,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-01 19:56:18
curl -T /users/myfolder/myfile.raw -u username:password "ftp://myftpsite/path/myfile.raw"

Ich benutze das die ganze Zeit. Es funktioniert wie ein Zauber.

 3
Author: cUrly Stooge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-10-30 22:49:19

Versuche:

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

(Wenn der Name der entfernten Datei ' myfile.raw')

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-31 21:11:26

Wie yan vorschlägt,

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

Sollte funktionieren, aber einige FTP-Server verwenden Sicherheitsrichtlinien, die nicht standardkonform sind. In diesen Fällen kann die Option --ftp-method singlecwd oder --ftp-method nocwd hilfreich sein.

 0
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-04-27 03:14:25