Fazendo download do arquivo do FTP usando cURL

16

Estou tentando usar um comando cURL para baixar um arquivo de um servidor FTP para uma unidade local no meu computador. Eu tentei

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

Mas ele retorna um erro que diz:

curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
curl: (6) Could not resolve host: myfile.raw; No data record of requested type

Eu tentei alguns outros métodos, mas nada parece funcionar.

Além disso, não sei ao certo como especificar para qual pasta eu quero que o arquivo seja baixado. Como eu faria isso?

    
por Josiah 31.03.2011 / 23:08

4 respostas

23

Tente

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

Nas URLs de FTP, o caminho é relativo ao diretório inicial (geralmente seu homedir). Você precisa especificar um caminho absoluto e isso significa usar %2f para especificar / . Isso é necessário porque o caminho em ftp: URLs é tratado como uma lista de nomes separados por barras , cada um dos quais deve ser dado a um comando CWD separado. A divisão %2f é decodificada após . Veja RFC 1738 e FTP URLs .

Quanto ao local de saída, basta fornecer um caminho para -o .

Sugestões de segurança:

  • Não coloque sua senha no URL. Armazená-lo em ~/.netrc também não é particularmente seguro, mas pelo menos está oculto em ps -ef .

  • Sua senha é enviada em texto não criptografado. Se o servidor suportar, use curl --ssl-reqd ou curl ftps://mysite/...

  • Usar o SFTP (o protocolo de transferência de arquivos SSH) seria ainda melhor.

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

Eu uso isso o tempo todo. Funciona como um encanto.

    
por 30.10.2012 / 22:20
0

Tente:

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

(Se o nome do arquivo remoto for 'myfile.raw')

    
por 31.03.2011 / 23:11
0

Como yan sugere,

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

deve funcionar, mas alguns servidores FTP usam políticas de segurança que não são compatíveis com os padrões. Nesses casos, a opção --ftp-method singlecwd ou --ftp-method nocwd pode ajudar.

    
por 27.04.2011 / 05:14