cmd:ncftpput 

My own upload server test 

ncftpput -v localhost /incoming ~/s/docs/file.sample.bin

Anonymously uploading to upload.sourceforge.net 

ncftpput -V upload.sourceforge.net /incoming foo-2.0.tar.gz
ncftpput -d stdout -V cdr /c/FtpRoot checksum.xws.crc

Recursive upload 

ncftpput -v -R -m -f $lgf . /tmp/tcl
ncftpput -V -R -m cdr /c/FtpRoot ssbooks

Help 

-d XX   Use the file XX for debug logging.
-v/-V   Do (do not) use progress  meters.   The  default  is  to  use
        progress meters if the output stream is a TTY.
-R      Recursive mode; copy whole directory trees.
-m      Attempt to make the remote destination directory before copying.
-S XX   Upload into temporary files suffixed by XX.
-z/-Z   Do (do not) try to resume transfers.  The default is to not try
        to resume (-Z).
-y      Try  using  "SITE UTIME" to preserve timestamps on remote host.
        Not many remote FTP servers support this, so it may not work.

Recursive upload 

The following are test results for NcFTPPut 3.0.3. The results are the same for NcFTPPut 3.1.1.

-R      Recursive mode; copy whole directory trees.

test 1 

$ ncftpput -f ~/s/docs/t_d_/tdat/.vectors.lg -d stdout public_html /www/html/docs/expresso/expresso
[..]
Cmd: FEAT
500: FEAT not understood.
Cmd: CWD public_html
250: CWD command successful.
/www/html/docs/expresso/expresso is a directory.
ncftpput /www/html/docs/expresso/expresso: could not open file.
Cmd: QUIT
221: Goodbye.

test 2 

$ ncftpput -f ~/s/docs/t_d_/tdat/.vectors.lg -d stdout public_html/expresso /www/html/docs/expresso/expresso/*
[..]
250: CWD command successful.
/www/html/docs/expresso/expresso/BasicInfo is a directory.
ncftpput /www/html/docs/expresso/expresso/BasicInfo: could not open file.
/www/html/docs/expresso/expresso/ExpressoADFramework is a directory.
ncftpput /www/html/docs/expresso/expresso/ExpressoADFramework: could not open file.
/www/html/docs/expresso/expresso/ExpressoApplicationsappwriter is a directory.
ncftpput /www/html/docs/expresso/expresso/ExpressoApplicationsappwriter: could not open file.
/www/html/docs/expresso/expresso/ExpressoApplicationsothers is a directory.
ncftpput /www/html/docs/expresso/expresso/ExpressoApplicationsothers: could not open file.

test 3 

$ ncftpput -f ~/s/docs/t_d_/tdat/.vectors.lg -d stdout public_html/expresso ./
[..]
250: CWD command successful.
./ is a directory.
ncftpput ./: could not open file.
Cmd: QUIT
221: Goodbye.