D4RQS1D3R
D4RQS1D3R

Reputation: 29

Transfer files from SFTP to FTP using scp command

How can I transfer files from SFTP to FTP using the scp command? I have tried this : scp -P21 /folder/file [email protected]:/folder But it is not working! It gives that error:

connection lost

Upvotes: 1

Views: 13718

Answers (1)

legoscia
legoscia

Reputation: 41568

The scp command doesn't support the FTP protocol, so you'll need to use an FTP client.

The top answer to this question, "How to upload one file by FTP from command line?", suggests invoking the FTP client like this:

$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF

That is, instruct the FTP client to connect to ftp.example.com, authenticate, and upload my-local-file.txt, all in a single shell command.


Alternatively, you can use curl. This page goes into more detail, but basically you would run:

curl --user user:secret --upload-file my-file.txt ftp://ftp.example.com/folder/

Note the trailing slash in the URL - that makes curl upload the file into that folder with the same name as the original. If you don't add a trailing slash, e.g. ftp://ftp.example.com/folder, curl thinks that you want to rename the file to folder when uploading.

If you don't want to specify the username and password on the command line, you can create a "netrc file":

machine ftp.example.com login user password secret

(Don't forget to restrict permissions with chmod 600 ./my-netrc-file!)

And tell curl to use it with the option --netrc-file:

curl --netrc-file ./my-netrc-file --upload-file /folder/file ftp://ftp.example.com/folder/

Upvotes: 4

Related Questions