Using "anonymous ftp"
---------------------

       Using "anonymous ftp" to get files from other Internet machines

                 Mark Moraes, University of Toronto

Anonymous ftp is a facility offered by many machines on the Internet.
This permits you to log in with the ftp program with the user name
'anonymous' or the user name 'ftp'. When prompted for a password, type
your e-mail address -- it's not necessary, but it's a courtesy for
those sites that like to know who is making use of their facility. Be
courteous.

Most ftp sites do not like people getting files from them during their
working hours since they usually have other load on their systems --
avoid 9am-5pm in their time-zone.

Also bear in mind that countries are often connected by relatively
low-bandwidth links, so please check local archive sites before you
connect to some distant country to fetch something.  If you think the
item you want is popular, ask your local archive site sysadmin, who
may be willing to set up a copy on the local archive.

Different archive sites have different forms of etiquette -- if you see
a README or README.TXT file in the ftp directory, please read it.

Once you're connected to the remote site via ftp, you can look around
and retrieve files. (Most anonymous ftp sites do not permit people to
store files) The ftp program prompts you with

ftp>

and offers a few commands that are similar to Unix.  "cd" changes your
directory on the remote machine, "lcd" changes your directory on the
local machine, "get" will get a file, etc. See the manual page for ftp
(use the command "man ftp")

Typically, a directory called 'pub' is where the interesting things
are stored. Some sites will have a file with a name like ls-lR, that
contains a complete list of the files on that site. Otherwise, you can
type ls -lR and get such a listing -- for some sites, this can take
a LONG time.  This doesn't work on some sites.

Usually, files are grouped in composite "archive" files, so you don't
have to get many small files separately. The most common Unix archive
file format for the Internet is tar, usually indicated by a ".tar"
suffix in the file name.  tar archives can be unpacked by running the tar
command -- you may want to first do a 'tar t' on the file to see what
it contains before unpacking it.

Occasionally, people use shell archives (with .shar or .sh suffixes)
instead.  These are Unix Bourne shell scripts, with files encapsulated
in them.  Be careful when unpacking shell archives since they have to
be run through the Bourne shell to unpack them.  The simplest way is
to use the unshar command, if your system has one installed.
Otherwise, you have to delete all the leading text with an editor and
then run the rest of the text through "sh" o unpack the archive.  Make
sure you're in the directory you want the files in before you try
unpacking the archive, since there's no good way to list the contents
of an archive.

Files are often stored compressed -- for Unix, the most common form
is the compress program, indicated by a .Z suffix on the file name.

Sometimes, people use programs like arc (indicated by a .ARC suffix),
zoo (.ZOO), zip (.ZIP) or lharc (.LZH), which are combined archival
and compression formats. (There are lots of other archive formats -
talk to the systems staff if you encounter them and don't know how to
deal with them) Macintosh archives are often in StuffIt format (.SIT).
In each case, you need the relevant extraction program.  Usually, the
archive site will also have a copy of the extraction program for ftp.
Finally, there's the "self-extracting" archive format, popular in the
PC world -- they look like executable programs (.EXE) and when run,
they unpack the files they contain.

When retrieving non-text files, you must use binary mode, otherwise
the file gets messed up. To do this, use the 'binary' command. (It's
safe to set this for text files if the other end is a Unix system,
since Unix doesn't differentiate between text and binary file
representation. If the site at the other end is non-Unix, you may need
to use some other mode -- see the documents for that site and for ftp)

An example session follows -- the commands I typed are all underlined
with a row of carets (^^^^) and are usually typed at the % or ftp>
prompt.

% ftp ftp.cs.toronto.edu
  ^^^^^^^^^^^^^^^^^^^^^^
Connected to ftp.cs.toronto.edu.
220 neat.cs FTP server (Version 5.55 Tue Aug 8 22:48:27 EDT 1989) ready.
Name (ftp.cs.toronto.edu:moraes): anonymous
                                  ^^^^^^^^^
331 Guest login ok, send ident as password.
Password:moraes@cs.toronto.edu
         ^^^^^^^^^^^^^^^^^^^^^
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
ftp> dir
     ^^^
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 62
drwxr-xr-x  2 0        0             512 Nov 20  1988 bin
drwxr-xr-x 11 0        0            2048 Dec 29 00:45 pub
226 Transfer complete.
ftp> cd pub
     ^^^^^^
250 CWD command successful.
ftp> dir
     ^^^
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 4523
...
-rw-r--r--  1 0        0           51251 Sep 16 12:02 ssl.tar.Z
...
226 Transfer complete.
ftp> hash
     ^^^^
Hash mark printing on (1024 bytes/hash mark).
ftp> binary
     ^^^^^^
200 Type set to I.
ftp> get ssl.tar.Z
     ^^^^^^^^^^^^^
200 PORT command successful.
150 Opening BINARY mode data connection for ssl.tar.Z (51251 bytes).
##################################################
226 Transfer complete.
51251 bytes received in 0.94 seconds (53 Kbytes/s)
ftp> quit
     ^^^^
221 Goodbye.

Now, to see what ssl.tar.Z contains, I can use:

% uncompress < ssl.tar.Z | tar tvf -
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
drwxrwxr-x 7/0        0 Sep 16 11:58 1989 ssl/
-rw-r--r-- 7/0      301 Sep 16 11:58 1989 ssl/Makefile
-rw-r--r-- 7/0      240 Jun  2 01:08 1988 ssl/README
-rw-r--r-- 7/0    20642 Feb 26 21:43 1988 ssl/file.ssl
-rw-r--r-- 7/0     5241 Feb 21 15:25 1988 ssl/file.sst
-rw-r--r-- 7/0    56581 Sep 16 11:57 1989 ssl/ssl.c
-rw-r--r-- 7/0    20642 Feb 26 20:08 1988 ssl/ssl.ssl
-rw-r--r-- 7/0     5241 Feb 26 21:41 1988 ssl/ssl:sst.c
-rw-r--r-- 7/0     5395 Feb 26 21:41 1988 ssl/ssl:sst.h
-rw-r--r-- 7/0    12211 Mar 30 22:34 1988 ssl/sslskel.c
-rw-r--r-- 7/0      274 Feb 26 20:42 1988 ssl/sslskel.ssl
-rw-r--r-- 7/0       55 Feb 26 20:42 1988 ssl/sslskel.sst.c
-rw-r--r-- 7/0     1001 Feb 26 20:42 1988 ssl/sslskel.sst.h

To extract the files, I use

% uncompress < ssl.tar.Z | tar xvf -
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ssl/
ssl/Makefile
ssl/README
ssl/file.ssl
ssl/file.sst
ssl/ssl.c
ssl/ssl.ssl
ssl/ssl:sst.c
ssl/ssl:sst.h
ssl/sslskel.c
ssl/sslskel.ssl
ssl/sslskel.sst.c
ssl/sslskel.sst.h

---
