cURLを使用してFTPからファイルをダウンロードする


19

cURLコマンドを使用して、FTPサーバーからコンピューターのローカルドライブにファイルをダウンロードしようとしています。私はもう試した

curl " ftp:// myftpsite " --user name:password -Q "CWD / users / myfolder /" -O "myfile.raw"

ただし、次のようなエラーが返されます。

curl:リモートファイル名に長さがありません!
curl:詳細については、「curl --help」または「curl --manual」を試してください
curl:(6)ホスト:myfile.rawを解決できませんでした。要求されたタイプのデータレコードがありません

他の方法を試しましたが、何も機能しないようです。

また、ファイルをダウンロードするフォルダーを指定する方法がよくわかりません。どうすればいいですか?

回答:


25

試して

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

FTP URLでは、パスは開始ディレクトリ(通常はhomedir)からの相対パスです。絶対パスを指定する必要があり%2fます/。これはを使用して指定することを意味します。これが必要なのは、ftp:URL のパスがスラッシュで区切られた名前のリストとして扱われ、それぞれが個別のCWDコマンドに与えられることになっているためです。%2fデコードされた後の分割。RFC 1738およびFTP URLを参照してください。

出力場所については、へのパスを指定するだけ-oです。


セキュリティの提案:

  • URLにパスワードを入れないでください。格納すること~/.netrcも特に安全ではありませんが、少なくとも隠されていps -efます。

  • パスワードはクリアテキストで送信されます。サーバーがサポートしている場合は、curl --ssl-reqdまたはcurl ftps://mysite/...

  • SFTP(SSHファイル転送プロトコル)を使用するとさらに良いでしょう。


うまくいきました。/も使用しているので、%2fの使用方法を完全に理解しているのかどうかはわかりませんが、機能しているので、文句を言うつもりはありません。助けてくれてありがとう!
ジョサイア

1
@Josiah:URL「パスが」によって分割されているようだ/、とそれぞれの引数がして送信されますCWD:コマンド%2fusers/myfolderとしてCWD /usersCWD myfolder。このトピックに関するRFC 1738を参照してください。
-grawity

2
curl -T /users/myfolder/myfile.raw -u username:password "ftp://myftpsite/path/myfile.raw"

私はこれをいつも使います。それは魅力のように機能します。


1
この答えが間違っていることに最初に気づいたのは私ですか?OPは、「ファイルのダウンロード」を求めながら、-Tパラメータは、「ファイルのアップロード」を意味
Kar.ma

0

試してください:

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

(リモートファイル名が「myfile.raw」の場合)


それを試みると、「curl:(9)Server denied denied to the change to the given directory」というエラーが表示されます。-Q "CWD"コマンドを使用する必要があったのはそのためだと思います。

0

ヤンが示唆するように、

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

動作するはずですが、一部のFTPサーバーは標準に準拠していないセキュリティポリシーを使用しています。これらの場合、--ftp-method singlecwdまたは--ftp-method nocwdオプションが役立つ場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.