NAME

ftp-upload - batch transfer local files to an FTP server

SYNOPSIS

ftp-upload [any-switch]... {[repeatable-switch]... file...}...

DESCRIPTION

ftp-upload is used to send local files to an FTP server. It isn't interactive, it's meant to be used from scripts. It is disciplined about its exit value and it doesn't output informational messages by default.

There are two kinds of switches. Initial switches have to appear before any filenames, they affect the session as a whole. Repeatable switches can appear interspersed with the file names, they affect the transfer of the files which appear after them on the command line.

OPTIONS

Initial switches

These have to be used before any file names listed on the command line.

--debug

Turn debugging on.

--help

Show the usage message and die.

--ignore-quit-failure

Don't complain or set a failure exit code just because the QUIT command fails. This can be necessary because some servers, in blatant disregard of RFC 959, close the command channel when you send them an ABOR command.

-v, --verbose

Print informational messages to stdout.

--version

Show the version number and exit.

Initial switches which specify connection information

These also have to be used before any file names listed on the command line. They specify the information used to set up the FTP connection.

--account account

This specifies the account to be used when logging into the remote system. This is distinct from the user name used to log in. Few systems need this. There is no default.

-h, --host host

Specify the host to which to connect. There is no default, you have to specify this switch.

--password pw

This gives the password which will be used to login. The default is your email address.

Note that you should not specify a real (secret) password this way, as on most systems anybody on the machine can see the arguments you pass to your commands. Use one of other password-setting switches instead.

-s, --password-stdin

This tells ftp-upload to read the password from standard input. No prompt will be printed, and a single line will be read. Most people will use this switch to specify the password. Eg,

echo 3x9sjJJh | ftp-upload -sh $host -u $user $file

Using echo this way is safe where the --password switch isn't if the echo command is built in to the shell.

--password-fd fd

This is like --password-stdin except that it reads the password from the file descriptor numbered fd.

ftp-upload -h $host -u $user --password-fd=3 3<$pw_file $file
-u, --user user

Specify the user name to use when logging in. The default is anonymous.

Repeatable switches

These switches can be used anywhere on the command line (except after the last file name). They affect the transfer of files listed after them.

--as remote-name

Normally a file is transferred using the same name it has locally. If you use this switch the next file transferred will be called remote-name on the other host instead.

ftp-upload --host $host --as index.htm index.html
-a, --ascii

Perform transfers in ASCII mode.

-b, --binary

Perform transfers in binary mode. This is the default.

-d, --dir dir

Change directory to dir on the FTP server before continuing. You can use this multiple times between files, ftp-upload will chdir once for each time you specify it. Using .. as the dir will cause an FTP CDUP to be done rather than a CWD.

-l, --ls

Try to get a remote directory listing of files after transferring them. I say "try" because there's no guaranteed way to do this with the FTP protocol. The command I run is LIST file. This will generally work if file doesn't contain any special characters.

-L, --nols

Disable the --ls behavior.

--tmp-none

Transfer files directly, don't do anything special to try to ensure that they don't appear under their real names on the remote machine until the transfer is finished. Each file is transferred with a single simple STOR. This is the default.

--tmp-samedir

Transfer files to the remote machine using a temporary name, then rename them when the transfer finishes. This won't work if the remote server doesn't give a recognizable response to the STOU command.

If the server's response to STOU isn't recognized by Net::FTP but is reasonable, Graham Barr might be willing to change Net::FTP to recognize it. If you like you can send the --debug output to me and I'll coordinate such requests.

--tmp-dir dir

This is like --tmp-samedir except that the file is transferred into the given directory rather than into its final directory. As with --tmp-dir it is renamed when the transfer is finished, and the remote server must give a recognizable response to STOU for this to work.

ftp-upload -h $host --tmp-dir tmp-incoming $file

AUTHOR

Roderick Schertler <roderick@argon.org>