ncftp(1) User Commands ncftp(1)

NAME


ncftp - Browser program for the File Transfer Protocol

SYNOPSIS


ncftp [host]

ncftp [ftp://host.name/directory/]

DESCRIPTION


The purpose of ncftp is to provide a powerful and flexible interface
to the Internet standard File Transfer Protocol. It is intended to
replace the stock ftp program that comes with the system.

Although the program appears to be rather spartan, you'll find that
ncftp has a wealth of valuable performance and usage features. The
program was designed with an emphasis on usability, and it does as
much as it can for you automatically so you can do what you expect to
do with a file transfer program, which is transfer files between two
interconnected systems.

Some of the cooler features include progress meters, filename
completion, command-line editing, background processing, auto-resume
downloads, bookmarking, cached directory listings, host redialing,
working with firewalls and proxies, downloading entire directory
trees, etc., etc.

The ncftp distribution comes with the useful utility programs
ncftpget(1) and ncftpput(1) which were designed to do command-line
FTP. In particular, they are very handy for shell scripts. This
version of ncftp no longer does command-line FTP, since the main
ncftp program is more of a browser-type program.

OPTIONS


The program allows you to specify a host or directory URL on the
command line. This is a synonym for running ncftp and then using the
open command. A few command-line flags are allowed with this mode:

-u XX Use username XX instead of anonymous.

-p XX Use password XX with the username.

-j XX Use account XX in supplement to the username and password
(deprecated).

-P XX Use port number XX instead of the default FTP service port
(21).

INTRODUCTION TO THE COMMAND SHELL


Upon running the program you are presented a command prompt where you
type commands to the program's shell. Usually you will want to open
a remote filesystem to transfer files to and from your local
machine's filesystem. To do that, you need to know the symbolic name
of the remote system, or its Internet Protocol (IP) address. For
example, a symbolic name might be ``typhoon.unl.edu,'' and its IP
address could be ``129.93.33.24.'' To open a connection to that
system, you use the program's open command:

open typhoon.unl.edu
open 129.93.33.24

Both of these try to open the machine called typhoon at the
University of Nebraska. Using the symbolic name is the preferred
way, because IP addresses may change without notice, while the
symbolic names usually stay the same.

When you open a remote filesystem, you need to have permission. The
FTP Protocol's authentication system is very similar to that of
logging in to your account. You have to give an account name, and
its password for access to that account's files. However, most
remote systems that have anything you might be interested in don't
require an account name for use. You can often get anonymous access
to a remote filesystem and exchange files that have been made
publicly accessible. The program attempts to get anonymous
permission to a remote system by default. What actually happens is
that the program tries to use ``anonymous'' as the account name, and
when prompted for a password, uses your E-mail address as a courtesy
to the remote system's maintainer. You can have the program try to
use a specific account also. That will be explained later.

After the open command completes successfully, you are connected to
the remote system and logged in. You should now see the command
prompt change to reflect the name of the current remote directory.
To see what's in the current remote directory, you can use the
program's ls and dir commands. The former is terse, preferring more
remote files in less screen space, and the latter is more verbose,
giving detailed information about each item in the directory.

You can use the program's cd command to move to other directories on
the remote system. The cd command behaves very much like the command
of the same name in the Bourne and Korn shell.

The purpose of the program is to exchange data with other systems.
You can use the program's get command to copy a file from the remote
system to your local system:

get README.txt

The program will display the progress of the transfer on the screen,
so you can tell how much needs to be done before the transfer
finishes. When the transfer does finish, then you can enter more
commands to the program's command shell.

You can use the program's put command to copy a file from your system
to the remote system:

put something.tar

When you are finished using the remote system, you can open another
one or use the quit

Before quitting, you may want to save the current FTP session's
settings for later. You can use the bookmark command to save an
entry into your $HOME/.ncftp/bookmarks file. When you use the
bookmark command, you also specify a bookmark name, so the next time
instead of opening the full hostname you can use the name of the
bookmark. A bookmark acts just like one for your web browser, so it
saves the remote directory you were in, the account name you used,
etc., and other information it learned so that the next time you use
the bookmark it should require as little effort from you as possible.

COMMAND REFERENCE


help The first command to know is help. If you just type

help

from the command shell, the program prints the names of all of
the supported commands. From there, you can get specific help
for a command by typing the command after, for example:

help open

prints information about the open command.

ascii This command sets the transfer type to ASCII text. This is
useful for text-only transfers because the concept of text
files differs between operating systems. For example on UNIX,
a text file denotes line breaks with the linefeed character,
while on MS-DOS a line break is denoted by both a carriage
return character and a line feed character. Therefore, for
data transfers that you consider the data as text you can use
ascii to ensure that both the remote system and local system
translate accordingly. The default transfer type that ncftp
uses is not ASCII, but straight binary.

bgget and bgput
These commands correspond to the get and put commands
explained below, except that they do the job in the
background. Normally when you do a get then the program does
the download immediately, and does not return control to you
until the download completes. The background transfers are
nice because you can continue browsing the remote filesystem
and even open other systems. In fact, they are done by a
daemon process, so even if you log off your UNIX host the
daemon should still do your transfers. The daemon will also
automatically continue to retry the transfers until they
finish. To tell when background jobs have finished, you have
to examine the $HOME/.ncftp/spool/log file, or run the jobs
command from within NcFTP.

Both the bgget and bgput commands allow you to schedule when
to do the transfers. They take a ``-@'' parameter, whose
argument is a date of the form YYYYMMDDhhmmss (four digit
year, month, day, hour, minute, second). For example, to
schedule a download at 3 AM on November 6, you could try:

bgget -@ 19971106030000 /pub/idstuff/quake/q2_100.zip

bgstart
This command tells ncftp to immediately start the background
transfers you've requested, which simply runs a copy of the
ncftpbatch program which is responsible for the background
jobs. Normally the program will start the background job as
soon as you close the current site, open a new site, or quit
the program. The reason for this is because since so many
users still use slow dialup links that starting the transfers
would slow things to a crawl, making it difficult to browse
the remote system. An added bonus of starting the background
job when you close the site is that ncftp can pass off that
open connection to the ncftpbatch program. That is nice when
the site is always busy, so that the background job doesn't
have to wait and get re-logged on to do its job.

binary Sets the transfer type to raw binary, so that no translation
is done on the data transferred. This is the default anyway,
since most files are in binary.

bookmark
Saves the current session settings for later use. This is
useful to save the remote system and remote working directory
so you can quickly resume where you left off some other time.
The bookmark data is stored in your $HOME/.ncftp/bookmarks
file.

bookmarks
Lists the contents of your $HOME/.ncftp/bookmarks file in a
human-readable format. You can use this command to recall the
bookmark name of a previously saved bookmark, so that you can
use the open command with it.

cat Acts like the ``/bin/cat'' UNIX command, only for remote
files. This downloads the file you specify and dumps it
directly to the screen. You will probably find the page
command more useful, since that lets you view the file one
screen at a time instead of printing the entire file at once.

cd Changes the working directory on the remote host. Use this
command to move to different areas on the remote server. If
you just opened a new site, you might be in the root
directory. Perhaps there was a directory called
``/pub/news/comp.sources.d'' that someone told you about.
From the root directory, you could:

cd pub
cd news
cd comp.sources.d

or, more concisely,

cd /pub/news/comp.sources.d

Then, commands such as get, put, and ls could be used to refer
to items in that directory.

Some shells in the UNIX environment have a feature I like,
which is switching to the previous directory. Like those
shells, you can do:

cd -

to change to the last directory you were in.

chmod Acts like the ``/bin/chmod'' UNIX command, only for remote
files. However, this is not a standard command, so remote FTP
servers may not support it.

close Disconnects you from the remote server. The program does this
for you automatically when needed, so you can simply open
other sites or quit the program without worrying about closing
the connection by hand.

debug This command is mostly for internal testing. You could type

debug 1

to turn debugging mode on. Then you could see all messages
between the program and the remote server, and things that are
only printed in debugging mode. However, this information is
also available in the $HOME/.ncftp/trace file, which is
created each time you run ncftp. If you need to report a bug,
send a trace file if you can.

dir Prints a detailed directory listing. It tries to behave like
UNIX's ``/bin/ls -l'' command. If the remote server seems to
be a UNIX host, you can also use the same flags you would with
ls, for instance

dir -rt

would try to act like

/bin/ls -lrt

would on UNIX.

edit Downloads into a temporary file for editing on the local host,
then uploads the changed file back to the remote host.

get Copies files from the current working directory on the remote
host to your machine's current working directory. To place a
copy of ``README'' and ``README.too'' in your local directory,
you could try:

get README README.too

You could also accomplish that by using a wildcard expression,
such as:

get README*

This command is similar to the behavior of other FTP programs'
mget command. To retrieve a remote file but give it a
different name on your host, you can use the ``-z'' flag.
This example shows how to download a file called ReadMe.txt
but name it locally as README:

get -z ReadMe.txt README

The program tries to ``resume'' downloads by default. This
means that if the remote FTP server lost the connection and
was only able to send 490 kilobytes of a 500 kilobyte file,
you could reconnect to the FTP server and do another get on
the same file name and it would get the last 10 kilobytes,
instead of retrieving the entire file again. There are some
occasions where you may not want that behavior. To turn it
off you can use the ``-f'' flag.

There are also times where you want to append to an existing
file. You can do this by using the ``-A'' flag, for example

get -A log.11

would append to a file named ``log.11'' if it existed locally.

Another thing you can do is delete a remote file after you
download it. This can be useful when a remote host expects a
file to be removed when it has been retrieved. Use the
double-D flag, such as ``get -DD'' to do this.

The get command lets you retrieve entire directory trees, too.
Although it may not work with some remote systems, you can try
``get -R'' with a directory to download the directory and its
contents.

When using the ``-R'' flag, you can also use the ``-T'' flag
to disable automatic on-the-fly TAR mode for downloading whole
directory trees. The program uses TAR whenever possible since
this usually preserves symbolic links and file permissions.
TAR mode can also result in faster transfers for directories
containing many small files, since a single data connection
can be used rather than an FTP data connection for each small
file. The downside to using TAR is that it forces downloading
of the whole directory, even if you had previously downloaded
a portion of it earlier, so you may want to use this option if
you want to resume downloading of a directory.

jobs Views the list of currently executing NcFTP background tasks.
This actually just runs ncftpbatch -l for you.

lcd The lcd command is the first of a few ``l'' commands that work
with the local host. This changes the current working
directory on the local host. If you want to download files
into a different local directory, you could use lcd to change
to that directory and then do your downloads.

lchmod Runs ``/bin/chmod'' on the local host.

lls Another local command that comes in handy is the lls command,
which runs ``/bin/ls'' on the local host and displays the
results in the program's window. You can use the same flags
with lls as you would in your command shell, so you can do
things like:

lcd ~/doc
lls -lrt p*.txt

lmkdir Runs ``/bin/mkdir'' on the local host.

lookup The program also has a built-in interface to the name service
via the lookup command. This means you can lookup entries for
remote hosts, like:

lookup cse.unl.edu ftp.cs.unl.edu sphygmomanometer.unl.edu

prints:

cse.unl.edu 129.93.33.1
typhoon.unl.edu 129.93.33.24
sphygmomanometer.unl.edu 129.93.33.126

There is also a more detailed option, enabled with ``-v,''
i.e.:

lookup -v cse.unl.edu ftp.cs.unl.edu

prints:

cse.unl.edu:
Name: cse.unl.edu
Address: 129.93.33.1

ftp.cs.unl.edu:
Name: typhoon.unl.edu
Alias: ftp.cs.unl.edu
Address: 129.93.33.24

You can also give IP addresses, so this would work too:

lookup 129.93.33.24

prints:

typhoon.unl.edu 129.93.33.24

lpage Views a local file one page at a time, with your preferred
$PAGER program.

lpwd Prints the current local directory. Use this command when you
forget where you are on your local machine.

lrename
Runs ``/bin/mv'' on the local host.

lrm Runs ``/bin/rm'' on the local host.

lrmdir Runs ``/bin/rmdir'' on the local host.

ls Prints a directory listing from the remote system. It tries
to behave like UNIX's ``/bin/ls -CF'' command. If the remote
server seems to be a UNIX host, you can also use the same
flags you would with ls, for instance

ls -rt

would try to act like

/bin/ls -CFrt

would on UNIX.

ncftp has a powerful built-in system for dealing with
directory listings. It tries to cache each one, so if you
list the same directory, odds are it will display instantly.
Behind the scenes, ncftp always tries a long listing, and then
reformats it as it needs to. So even if your first listing of
a directory was a regular ``ls'' which displayed the files in
columns, your next listing could be ``ls -lrt'' and ncftp
would still use the cached directory listing to quickly
display the information for you!

mkdir Creates a new directory on the remote host. For many public
archives, you won't have the proper access permissions to do
that.

open Establishes an FTP control connection to a remote host. By
default, ncftp logs in anonymously to the remote host. You
may want to use a specific user account when you log in, so
you can use the ``-u'' flag to specify which user. This
example shows how to open the host ``bowser.nintendo.co.jp''
using the username ``mario:''

open -u mario bowser.nintendo.co.jp

Here is a list of options available for use with the open
command:

-u XX Use username XX instead of anonymous.

-p XX Use password XX with the username.

-j XX Use account XX in supplement to the username and
password (deprecated).

-P XX Use port number XX instead of the default FTP service
port (21).

page Browses a remote file one page at a time, using your $PAGER
program. This is useful for reading README's on the remote
host without downloading them first.

pdir and pls
These commands are equivalent to dir and ls respectively, only
they feed their output to your pager. These commands are
useful if the directory listing scrolls off your screen.

put Copies files from the local host to the remote machine's
current working directory. To place a copy of ``xx.zip'' and
``yy.zip'' in the remote directory, you could try:

put xx.zip yy.zip

You could also accomplish that by using a wildcard expression,
such as:

put *.zip

This command is similar to the behavior of other FTP programs'
mput command. To send a remote file but give it a different
name on your host, you can use the ``-z'' flag. This example
shows how to upload a file called ``ncftpd-2.0.6.tar.gz'' but
name it remotely as ``NFTPD206.TGZ:''

put -z ncftpd-2.0.6.tar.gz NFTPD206.TGZ

The program does not try to ``resume'' uploads by default. If
you do want to resume an upload, use the ``-z'' flag.

There are also times where you want to append to an existing
remote file. You can do this by using the ``-A'' flag, for
example

put -A log11.txt

would append to a file named ``log11.txt'' if it existed on
the remote server.

Another thing you can do is delete a local file after you
upload it. Use the double-D flag, such as ``put -DD'' to do
this.

The put command lets you send entire directory trees, too. It
should work on all remote systems, so you can try ``put -R''
with a directory to upload the directory and its contents.

pwd Prints the current remote working directory. A portion of the
pathname is also displayed in the shell's prompt.

quit Of course, when you finish using the program, type quit to end
the program (You could also use bye, exit, or ^D).

quote This can be used to send a direct FTP Protocol command to the
remote server. Generally this isn't too useful to the average
user.

rename If you need to change the name of a remote file, you can use
the rename command, like:

rename SPHYGMTR.TAR sphygmomanometer-2.3.1.tar

rhelp Sends a help request to the remote server. The list of FTP
Protocol commands is often printed, and sometimes some other
information that is actually useful, like how to reach the
site administrator.

Depending on the remote server, you may be able to give a
parameter to the server also, like:

rhelp NLST

One server responded:

Syntax: NLST [ <sp> path-name ]

rm If you need to delete a remote file you can try the rm
command. Much of the time this won't work because you won't
have the proper access permissions. This command doesn't
accept any flags, so you can't nuke a whole tree by using
``-rf'' flags like you can on UNIX.

rmdir Similarly, the rmdir command removes a directory. Depending
on the remote server, you may be able to remove a non-empty
directory, so be careful.

set This lets you configure some program variables, which are
saved between runs in the $HOME/.ncftp/prefs file. The basic
syntax is:

set <option> <value>

For example, to change the value you use for the anonymous
password, you might do:

set anon-password devnull@example.com

See the next section for a list of things you change.

show This lets you display program variables. You can do
``show all'' to display all of them, or give a variable name
to just display that one, such as:

show anon-password

site One obscure command you may have to use someday is site. The
FTP Protocol allows for ``site specific'' commands. These
``site'' commands vary of course, such as:

site chmod 644 README

Actually, ncftp's chmod command really does the above.

Try doing one of these to see what the remote server supports,
if any:

rhelp SITE
site help

type You may need to change transfer types during the course of a
session with a server. You can use the type command to do
this. Try one of these:

type ascii
type binary
type image

The ascii command is equivalent to ``type a'', and the binary
command is equivalent to ``type i'' and ``type b''.

umask Sets the process' umask on the remote server, if it has any
concept of a umask, i.e.:

umask 077

However, this is not a standard command, so remote FTP servers
may not support it.

version
This command dumps some information about the particular
edition of the program you are using, and how it was installed
on your system.

VARIABLE REFERENCE


anon-password
Specifies what to use for the password when logging in
anonymously. Internet convention has been to use your E-mail
address as a courtesy to the site administrator. If you
change this, be aware that some sites require (i.e. they check
for) valid E-mail addresses.

auto-resume
NcFTP 3 now prompts the user by default when you try to
download a file that already exists locally, or upload a file
that already exists remotely. Older versions of the program
automatically guessed whether to overwrite the existing file
or attempt to resume where it left off, but sometimes the
program would guess wrong. If you would prefer that the
program always guess which action to take, set this variable
to yes, otherwise, leave it set to no and the program will
prompt you for which action to take.

auto-ascii
If set to a list of pipe-character delimited extensions, files
with these extensions will be sent in ASCII mode even if
binary mode is currently in effect. This option allows you to
transfer most files in binary, with the exception of a few
well-known file types that should be sent in ASCII. This
option is enabled by default, and set to a list of common
extensions (e.g., .txt and .html).

autosave-bookmark-changes
With the advent of version 3 of NcFTP, the program treats
bookmarks more like they would with your web browser, which
means that once you bookmark the site, the remote directory is
static. If you set this variable to yes, then the program
will automatically update the bookmark's starting remote
directory with the directory you were in when you closed the
site. This behavior would be more like that of NcFTP version
2.

confirm-close
By default the program will ask you when a site you haven't
bookmarked is about to be closed. To turn this prompt off,
you can set this variable to no.

connect-timeout
Previous versions of the program used a single timeout value
for everything. You can now have different values for
different operations. However, you probably do not need to
change these from the defaults unless you have special
requirements.

The connect-timeout variable controls how long to wait, in
seconds, for a connection establishment to complete before
considering it hopeless. You can choose to not use a timeout
at all by setting this to -1.

control-timeout
This is the timer used when ncftp sends an FTP command over
the control connection to the remote server. If the server
hasn't replied in that many seconds, it considers the session
lost.

logsize
This is controls how large the transfer log ($HOME/.ncftp/log)
can grow to, in kilobytes. The default is 200, for 200kB; if
you don't want a log, set this to 0.

pager This is the external program to use to view a text file, and
is more by default.

passive
This controls ncftp's behavior for data connections, and can
be set to one of on, off, or the default, optional. When
passive mode is on, ncftp uses the FTP command primitive PASV
to have the client establish data connections to the server.
The default FTP protocol behavior is to use the FTP command
primitive PORT which has the server establish data connections
to the client. The default setting for this variable,
optional, allows ncftp to choose whichever method it deems
necessary.

progress-meter
You can change how the program reports file transfer status.
Select from meter 2, 1, or 0.

redial-delay
When a host is busy or unavailable, the program waits this
number of seconds before trying again. The smallest you can
set this is to 10 seconds -- so if you were planning on being
inconsiderate, think again.

save-passwords
If you set this variable to yes, the program will save
passwords along with the bookmarks you save. While this makes
non-anonymous logins more convenient, this can be very
dangerous since your account information is now sitting in the
$HOME/.ncftp/bookmarks file. The passwords aren't in clear
text, but it is still trivial to decode them if someone wants
to make a modest effort.

show-status-in-xterm-titlebar
If set to yes and operating from within an xterm window, the
program will change the window's titlebar accordingly.

so-bufsize
If your operating system supports TCP Large Windows, you can
try setting this variable to the number of bytes to set the
TCP/IP socket buffer to. This option won't be of much use
unless the remote server also supports large window sizes and
is pre-configured with them enabled.

xfer-timeout
This timer controls how long to wait for data blocks to
complete. Don't set this too low or else your transfers will
timeout without completing.

FIREWALL AND PROXY CONFIGURATION


You may find that your network administrator has placed a firewall
between your machine and the Internet, and that you cannot reach
external hosts.

The answer may be as simple as setting ncftp to use passive mode
only, which you can do from a ncftp command prompt like this:

set passive on

The reason for this is because many firewalls do not allow incoming
connections to the site, but do allow users to establish outgoing
connections. A passive data connection is established by the client
to the server, whereas the default is for the server to establish the
connection to the client, which firewalls may object to. Of course,
you now may have problems with sites whose primitive FTP servers do
not support passive mode.

Otherwise, if you know you need to have ncftp communicate directly
with a firewall or proxy, you can try editing the separate
$HOME/.ncftp/firewall configuration file. This file is created
automatically the first time you run the program, and contains all
the information you need to get the program to work in this setup.

The basics of this process are configuring a firewall (proxy) host to
go through, a user account and password for authentication on the
firewall, and which type of firewall method to use. You can also
setup an exclusion list, so that ncftp does not use the firewall for
hosts on the local network.

FILES


$HOME/.ncftp/bookmarks
Saves bookmark and host information.

$HOME/.ncftp/firewall
Firewall access configuration file.

$HOME/.ncftp/prefs
Program preferences.

$HOME/.ncftp/trace
Debugging output for entire program run.

$HOME/.ncftp/v3init
Used to tell if this version of the program has run before.

$HOME/.ncftp/spool/
Directory where background jobs are stored in the form of
spool configuration files.

$HOME/.ncftp/spool/log
Information for background data transfer processes.

ENVIRONMENT


PATH User's search path, used to find the ncftpbatch program,
pager, and some other system utilities.

PAGER Program to use to view text files one page at a time.

TERM If the program was compiled with support for GNU Readline it
will need to know how to manipulate the terminal correctly for
line-editing, etc. The pager program will also take advantage
of this setting.

HOME By default, the program writes its configuration data in a
.ncftp subdirectory of the HOME directory.

NCFTPDIR
If set, the program will use this directory instead of
$HOME/.ncftp. This variable is optional except for those
users whose home directory is the root directory.

COLUMNS
Both the built-in ls command and the external ls command need
this to determine how many screen columns the terminal has.

BUGS


There are no such sites named bowser.nintendo.co.jp or
sphygmomanometer.unl.edu.

Auto-resume should check the file timestamps instead of relying upon
just the file sizes, but it is difficult to do this reliably within
FTP.

Directory caching and recursive downloads depend on UNIX-like
behavior of the remote host.

AUTHOR


Mike Gleason, NcFTP Software (http://www.ncftp.com).

SEE ALSO


ncftpput(1), ncftpget(1), ncftpbatch(1), ftp(1), rcp(1), tftp(1).

LibNcFTP (http://www.ncftp.com/libncftp).

NcFTPd (http://www.ncftp.com/ncftpd).

THANKS


Thanks to everyone who uses the program. Your support is what drives
me to improve the program!

I thank Dale Botkin and Tim Russell at my former ISP, Probe
Technology.

Ideas and some code contributed by my partner, Phil Dietz.

Thanks to Brad Mittelstedt and Chris Tjon, for driving and refining
the development of the backbone of this project, LibNcFTP.

I'd like to thank my former system administrators, most notably
Charles Daniel, for making testing on a variety of platforms
possible, letting me have some extra disk space, and for maintaining
the UNL FTP site.

For testing versions 1 and 2 above and beyond the call of duty, I am
especially grateful to: Phil Dietz, Kok Hon Yin, and
Andrey A. Chernov (ache@astral.msk.su).

Thanks to Tim MacKenzie (t.mackenzie@trl.oz.au) for the original
filename completion code for version 2.3.0 and 2.4.2.

Thanks to DaviD W. Sanderson (dws@ora.com), for helping me out with
the man page.

Thanks to those of you at UNL who appreciate my work.

Thanks to Red Hat Software for honoring my licensing agreement, but
more importantly, thanks for providing a solid and affordable
development platform.

APOLOGIES


To the users, for not being able to respond personally to most of
your inquiries.

To Phil, for things not being the way they should be.

ncftp NcFTP Software ncftp(1)

tribblix@gmail.com :: GitHub :: Privacy