How to Upload One File by FTP from Command Line

ftplinuxUbuntu

I need to upload a single file to FTP server from Ubuntu. This operation should be done in a script (in non-interactive mode). What is the right syntax for ftp?

I'm trying this, to no avail:

$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'

Best Answer

Here is one approach:

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

Alternatively, create (or edit) the ~/.netrc file in the home dir of the user that will run the ftp command, give it appropriate perms (chmod 0600 ~/.netrc), and add the following:

# ~/.netrc
machine ftp.example.com
login user
password secret

Then omit the login information, as in:

$ echo put my-local-file.txt | ftp ftp.example.com

Also, here's how you might do the same thing using curl:

$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret
Related Question