web-dev-qa-db-ja.com

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

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

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

しかし、それは言うエラーを返します:

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

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

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

22
Josiah

試す

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

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

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


セキュリティの提案:

  • URLにパスワードを含めないでください。 ~/.netrcへの保存も特に安全ではありませんが、少なくともps -efからは隠されています。

  • パスワードは平文で送信されます。サーバーがサポートしている場合は、curl --ssl-reqdまたはcurl ftps://mysite/...を使用します

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

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

いつも使っています。それは魅力のように働きます。

2
cUrly Stooge

試してください:

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

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

0
yan

ヤンが示唆するように、

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

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

0
Dan