This form may be used to access the UNIX man pages. Note this form runs on a Solaris machine, so the results may disagree with other operating system implementations of the commands.
ftp - file transfer program
ftp [-adfginpstvx] [-m GSS Mech] [-T timeout] [hostname
[port]]
The ftp command is the user interface to the Internet stan-
dard File Transfer Protocol (FTP). ftp transfers files to
and from a remote network site.
The host and optional port with which ftp is to communicate
can be specified on the command line. If this is done, ftp
immediately attempts to establish a connection to an FTP
server on that host. Otherwise, ftp enters its command
interpreter and awaits instructions from the user. When ftp
is awaiting commands from the user, it displays the prompt
ftp>.
The following options can be specified at the command line,
or to the command interpreter:
-a Uses GSSAPI authentication only. If the
authentication fails, this option closes the
connection.
-d Enables debugging.
-f Forwards local security credentials to the
remote server.
-g Disables filename "globbing".
-i Turns off interactive prompting during mul-
tiple file transfers.
-m Specifies the GSS-API mechanism to use. The
default is to use the kerberos_v5 mechanism.
Supported alternatives are defined in
/etc/gss/mech (see mech(4)).
-n Does not attempt "auto-login" upon initial
connection. If auto-login is not disabled,
ftp checks the .netrc file in the user's
home directory for an entry describing an
account on the remote machine. If no entry
exists, ftp prompts for the login name of
the account on the remote machine (the
default is the login name on the local
machine), and, if necessary, prompts for a
password and an account with which to login.
-p Enables passive mode for data transfers.
This command is useful when connecting to a
remote host from behind a connection filter-
ing firewall.
-s Skips the SYST command that is sent by
default to all remote servers upon connec-
tion. The system command is what enables the
automatic use of binary mode rather than the
protocol default ascii mode.
As some older servers cannot handle the ftp
command, this directive is provided to allow
inter-operability with these servers.
-t Enables packet tracing (unimplemented).
-T timeout Enables global connection timer, specified
in seconds (decimal). There is a timer for
the control connection that is reset when
anything is sent to the server and disabled
while the client is prompting for user
input. Another independent timer is used to
monitor incoming or outgoing data connec-
tions.
-v Shows all responses from the remote server,
as well as report on data transfer statis-
tics. This is turned on by default if ftp is
running interactively with its input coming
from the user's terminal.
-x Attempts to use GSSAPI for authentication
and encryption. Data and Command channel
protection is set to "private".
The following commands can be specified to the command
interpreter:
!
[ command ] Runs command as a shell command on the local
machine. If no command is given, invokes an interactive
shell.
$ macro-name [ args ]
Executes the macro macro-name that was defined with the
macdef command. Arguments are passed to the macro
unglobbed.
account [ passwd ]
Supplies a supplemental password required by a remote
system for access to resources once a login has been
successfully completed. If no argument is included, the
user is prompted for an account password in a non-
echoing input mode.
append local-file [ remote-file ]
Appends a local file to a file on the remote machine. If
remote-file is not specified, the local file name is
used, subject to alteration by any ntrans or nmap set-
tings. File transfer uses the current settings for
"representation type", "file structure", and "transfer
mode".
ascii
Sets the "representation type" to "network ASCII". This
is the default type.
bell
Sounds a bell after each file transfer command is com-
pleted.
binary
Sets the "representation type" to "image".
bye
Terminates the FTP session with the remote server and
exit ftp. An EOF also terminates the session and exit.
case
Toggles remote computer file name case mapping during
mget commands. When case is on (default is off), remote
computer file names with all letters in upper case are
written in the local directory with the letters mapped
to lower case.
cd remote-directory
Changes the working directory on the remote machine to
remote-directory.
cdup
Changes the remote machine working directory to the
parent of the current remote machine working directory.
clear
Sets the protection level on data transfers to "clear".
If no ADAT command succeeded, then this is the default
protection level.
close
Terminates the FTP session with the remote server, and
return to the command interpreter. Any defined macros
are erased.
cr
Toggles <RETURN> stripping during "network ASCII" type
file retrieval. Records are denoted by a
<RETURN>/LINEFEED sequence during "network ASCII" type
file transfer. When cr is on (the default), <RETURN>
characters are stripped from this sequence to conform
with the UNIX system single LINEFEED record delimiter.
Records on non-UNIX-system remote hosts can contain sin-
gle LINEFEED characters; when an "network ASCII" type
transfer is made, these LINEFEED characters can be dis-
tinguished from a record delimiter only when cr is off.
delete remote-file
Deletes the file remote-file on the remote machine.
debug
Toggles debugging mode. When debugging is on, ftp prints
each command sent to the remote machine, preceded by the
string ->.
dir [ remote-directory [ local-file ]]
Prints a listing of the directory contents in the direc-
tory, remote-directory, and, optionally, placing the
output in local-file. If no directory is specified, the
current working directory on the remote machine is used.
If no local file is specified, or local-file is -, out-
put is sent to the terminal.
disconnect
A synonym for close.
form [ format-name ]
Sets the carriage control format subtype of the
"representation type" to format-name. The only valid
format-name is non-print, which corresponds to the
default "non-print" subtype.
get remote-file [ local-file ]
Retrieves the remote-file and store it on the local
machine. If the local file name is not specified, it is
given the same name it has on the remote machine, sub-
ject to alteration by the current case, ntrans, and nmap
settings. The current settings for "representation
type", "file structure", and "transfer mode" are used
while transferring the file.
glob
Toggles filename expansion, or "globbing", for mdelete,
mget and mput. If globbing is turned off, filenames are
taken literally.
Globbing for mput is done as in sh(1). For mdelete and
mget, each remote file name is expanded separately on
the remote machine, and the lists are not merged.
Expansion of a directory name is likely to be radically
different from expansion of the name of an ordinary
file: the exact result depends on the remote operating
system and FTP server, and can be previewed with the
command, mls remote-files -.
mget and mput are not meant to transfer entire directory
subtrees of files. You can do this by transferring a
tar(1) archive of the subtree (using a "representation
type" of "image" as set by the binary command).
hash
Toggles hash-sign (#) printing for each data block
transferred. The size of a data block is 8192 bytes.
help [ command ]
Prints an informative message about the meaning of com-
mand. If no argument is given, ftp prints a list of the
known commands.
lcd [ directory ]
Changes the working directory on the local machine. If
no directory is specified, the user's home directory is
used.
ls [ -al | remote-directory [ local-file ]]
By default, prints an abbreviated listing of the con-
tents of a directory on the remote machine. This default
behavior can be changed to make ls a synonym of the dir
command. This change can be achieved by setting
FTP_LS_SENDS_NLST to 'no' in /etc/default/ftp or in the
environment. See ftp(4) for details.
The -a option lists all entries, including those that
begin with a dot (.), which are normally not listed. The
-l option lists files in long format, giving mode,
number of links, owner, group, size in bytes, and time
of last modification for each file. If the file is a
special file, the size field instead contains the major
and minor device numbers rather than a size. If the file
is a symbolic link, the filename is printed followed by
"->" and the pathname of the referenced file.
If remote-directory is left unspecified, the current
working directory is used.
If no local file is specified, or if local-file is -,
the output is sent to the terminal.
macdef macro-name
Defines a macro. Subsequent lines are stored as the
macro macro-name. A null line (consecutive NEWLINE char-
acters in a file or <RETURN> characters from the termi-
nal) terminates macro input mode. There is a limit of 16
macros and 4096 total characters in all defined macros.
Macros remain defined until a close command is executed.
The macro processor interprets $ and \ as special char-
acters. A $ followed by a number (or numbers) is
replaced by the corresponding argument on the macro
invocation command line. A $ followed by an i signals
that macro processor that the executing macro is to be
looped. On the first pass, $i is replaced by the first
argument on the macro invocation command line; on the
second pass, it is replaced by the second argument, and
so on. A \ followed by any character is replaced by that
character. Use the \ to prevent special treatment of the
$.
mdelete remote-files
Deletes the remote-files on the remote machine.
mdir remote-files local-file
Like dir, except multiple remote files can be specified.
If interactive prompting is on, ftp prompts the user to
verify that the last argument is indeed the target local
file for receiving mdir output.
mget remote-files
Expands the remote-files on the remote machine and do a
get for each file name thus produced. See glob for
details on the filename expansion. Resulting file names
are processed according to case, ntrans, and nmap set-
tings. Files are transferred into the local working
directory, which can be changed with lcd directory. New
local directories can be created with ! mkdir directory.
mkdir directory-name
Makes a directory on the remote machine.
mls remote-files local-file
Like ls(1), except multiple remote files can be speci-
fied. If interactive prompting is on, ftp prompts the
user to verify that the last argument is indeed the
target local file for receiving mls output.
mode [ mode-name ]
Sets the "transfer mode" to mode-name. The only valid
mode-name is stream, which corresponds to the default
"stream" mode. This implementation only supports stream,
and requires that it be specified.
mput local-files
Expands wild cards in the list of local files given as
arguments and do a put for each file in the resulting
list. See glob for details of filename expansion.
Resulting file names are processed according to ntrans
and nmap settings.
nlist [ -al | remote-directory [ local-file ]]
Prints an abbreviated listing of the contents of a
directory on the remote machine, listing only those
files that can be retrieved by the get command, unless
the -a or -l option is used. If remote-directory is left
unspecified, the current working directory is used.
The -a option lists all entries, including those that
begin with a dot (.), which are normally not listed. The
-l option lists files in long format the same way it
does when used with the ls command.
nmap [ inpattern outpattern ]
Sets or unsets the filename mapping mechanism. If no
arguments are specified, the filename mapping mechanism
is unset. If arguments are specified, remote filenames
are mapped during mput commands and put commands issued
without a specified remote target filename. If arguments
are specified, local filenames are mapped during mget
commands and get commands issued without a specified
local target filename.
This command is useful when connecting to a non-UNIX-
system remote host with different file naming conven-
tions or practices. The mapping follows the pattern set
by inpattern and outpattern. inpattern is a template for
incoming filenames (which can have already been pro-
cessed according to the ntrans and case settings). Vari-
able templating is accomplished by including the
sequences $1, $2, ..., $9 in inpattern. Use \ to prevent
this special treatment of the $ character. All other
characters are treated literally, and are used to deter-
mine the nmap inpattern variable values.
For example, given inpattern $1.$2 and the remote file
name mydata.data, $1 would have the value mydata, and $2
would have the value data.
The outpattern determines the resulting mapped filename.
The sequences $1, $2, ..., $9 are replaced by any value
resulting from the inpattern template. The sequence $0
is replaced by the original filename. Additionally, the
sequence [seq1,seq2] is replaced by seq1 if seq1 is not
a null string; otherwise it is replaced by seq2.
For example, the command nmap $1.$2.$3 [$1,$2].[$2,file]
would yield the output filename myfile.data for input
filenames myfile.data and myfile.data.old, myfile.file
for the input filename myfile, and myfile.myfile for the
input filename .myfile. SPACE characters can be included
in outpattern, as in the example nmap $1 | sed "s/ *$//"
> $1. Use the \ character to prevent special treatment
of the $, [, ], and ,, characters.
ntrans [ inchars [ outchars ] ]
Sets or unsets the filename character translation
mechanism. If no arguments are specified, the filename
character translation mechanism is unset. If arguments
are specified, characters in remote filenames are
translated during mput commands and put commands issued
without a specified remote target filename, and charac-
ters in local filenames are translated during mget com-
mands and get commands issued without a specified local
target filename.
This command is useful when connecting to a non-UNIX-
system remote host with different file naming conven-
tions or practices. Characters in a filename matching a
character in inchars are replaced with the corresponding
character in outchars. If the character's position in
inchars is longer than the length of outchars, the char-
acter is deleted from the file name.
Only 16 characters can be translated when using the
ntrans command under ftp. Use case (described above) if
needing to convert the entire alphabet.
open host [ port ]
Establishes a connection to the specified host FTP
server. An optional port number can be supplied, in
which case, ftp attempts to contact an FTP server at
that port. If the auto-login option is on (default set-
ting), ftp also attempts to automatically log the user
in to the FTP server.
passive
Toggles passive mode. When passive mode is turned on,
the ftp client sends the PASV command requesting that
the FTP server open a port for the data connection and
return the address of that port. The remote server
listens on that port and the client connects to it. When
passive mode is turned off, the ftp client sends the
PORT command to the server specifying an address for the
remote server to connect back to. Passive mode is useful
when the connections to the ftp client are controlled,
for example, when behind a firewall. When connecting to
an IPv6-enabled FTP server, EPSV can be used in place of
PASV and EPRT in place of PORT.
private
Sets the protection level on data transfers to
"private". Data transmissions are confidentiality- and
integrity-protected by encryption. If no ADAT command
succeeded, then the only possible level is "clear".
prompt
Toggles interactive prompting. Interactive prompting
occurs during multiple file transfers to allow the user
to selectively retrieve or store files. By default,
prompting is turned on. If prompting is turned off, any
mget or mput transfers all files, and any mdelete
deletes all files.
protect protection-level
Sets the protection level on data transfers to
protection-level. The valid protection levels are
"clear" for unprotected data transmissions, "safe" for
data transmissions that are integrity-protected by cryp-
tographic checksum, and "private" for data transmissions
that are confidentiality- and integrity- protected by
encryption. If no ADAT command succeeded, then the only
possible level is "clear". If no level is specified, the
current level is printed. The default protection level
is "clear".
proxy ftp-command
Executes an FTP command on a secondary control connec-
tion. This command allows simultaneous connection to two
remote FTP servers for transferring files between the
two servers. The first proxy command should be an open,
to establish the secondary control connection. Enter the
command proxy ? to see other FTP commands executable on
the secondary connection.
The following commands behave differently when prefaced
by proxy: open does not define new macros during the
auto-login process, close does not erase existing macro
definitions, get and mget transfer files from the host
on the primary control connection to the host on the
secondary control connection, and put, mputd, and append
transfer files from the host on the secondary control
connection to the host on the primary control connec-
tion.
Third party file transfers depend upon support of the
PASV command by the server on the secondary control con-
nection.
put local-file [ remote-file ]
Stores a local file on the remote machine. If remote-
file is left unspecified, the local file name is used
after processing according to any ntrans or nmap set-
tings in naming the remote file. File transfer uses the
current settings for "representation type", "file struc-
ture", and "transfer mode".
pwd
Prints the name of the current working directory on the
remote machine.
quit
A synonym for bye.
quote arg1 arg2 ...
Sends the arguments specified, verbatim, to the remote
FTP server. A single FTP reply code is expected in
return. (The remotehelp command displays a list of valid
arguments.)
quote should be used only by experienced users who are
familiar with the FTP protocol.
recv remote-file [ local-file ]
A synonym for get.
reget remote-file [ local-file ]
The reget command acts like get, except that if local-
file exists and is smaller than remote-file, local-file
is presumed to be a partially transferred copy of
remote-file and the transfer is continued from the
apparent point of failure. This command is useful when
transferring large files over networks that are prone to
dropping connections.
remotehelp [ command-name ]
Requests help from the remote FTP server. If a command-
name is specified it is supplied to the server as well.
rename from to
Renames the file from on the remote machine to have the
name to.
reset
Clears reply queue. This command re-synchronizes
command/reply sequencing with the remote FTP server.
Resynchronization can be necessary following a violation
of the FTP protocol by the remote server.
restart [ marker ]
Restarts the immediately following get or put at the
indicated marker. On UNIX systems, marker is usually a
byte offset into the file. When followed by an mget,
the restart applies to the first get performed. Specify-
ing a marker of 0 clears the restart marker. If no argu-
ment is specified, the current restart status is
displayed.
rmdir directory-name
Deletes a directory on the remote machine.
runique
Toggles storing of files on the local system with unique
filenames. If a file already exists with a name equal to
the target local filename for a get or mget command, a
.1 is appended to the name. If the resulting name
matches another existing file, a .2 is appended to the
original name. If this process continues up to .99, an
error message is printed, and the transfer does not take
place. The generated unique filename is reported.
runique does not affect local files generated from a
shell command. The default value is off.
safe
Sets the protection level on data transfers to "safe".
Data transmissions are integrity-protected by crypto-
graphic checksum. If no ADAT command succeeded, then the
only possible level is "clear".
send local-file [ remote-file ]
A synonym for put.
sendport
Toggles the use of PORT commands. By default, ftp
attempts to use a PORT command when establishing a con-
nection for each data transfer. The use of PORT commands
can prevent delays when performing multiple file
transfers. If the PORT command fails, ftp uses the
default data port. When the use of PORT commands is dis-
abled, no attempt is made to use PORT commands for each
data transfer. This is useful when connected to certain
FTP implementations that ignore PORT commands but
incorrectly indicate they have been accepted.
site arg1 [ arg2 ] ...
Sends the arguments specified, verbatim, to the remote
FTP server as a SITE command.
status
Show the current status of ftp.
struct [ struct-name ]
Sets the file structure to struct-name. The only valid
struct-name is file, which corresponds to the default
"file" structure. The implementation only supports file,
and requires that it be specified.
sunique
Toggles storing of files on remote machine under unique
file names. The remote FTP server must support the STOU
command for successful completion. The remote server
reports the unique name. Default value is off.
tcpwindow [ size ]
Sets the TCP window size to be used for data connec-
tions. Specifying a size of 0 stops the explicit setting
of the TCP window size on data connections. If no argu-
ment is specified, the current setting is displayed.
tenex
Sets the "representation type" to that needed to talk to
TENEX machines.
trace
Toggles packet tracing (unimplemented).
type [ type-name ]
Sets the "representation type" to type-name. The valid
type-names are ascii for "network ASCII", binary or
image for "image", and tenex for "local byte size" with
a byte size of 8 (used to talk to TENEX machines). If no
type is specified, the current type is printed.
The default type is "network ASCII".
user user-name [ password [ account ]]
Identify yourself to the remote FTP server. If the pass-
word is not specified and the server requires it, ftp
prompts the user for it (after disabling local echo). If
an account field is not specified, and the FTP server
requires it, the user is prompted for it. If an account
field is specified, an account command is relayed to the
remote server after the login sequence is completed if
the remote server did not require it for logging in.
Unless ftp is invoked with "auto-login" disabled, this
process is done automatically on initial connection to
the FTP server.
verbose
Toggles verbose mode. In verbose mode, all responses
from the FTP server are displayed to the user. In addi-
tion, if verbose mode is on, when a file transfer com-
pletes, statistics regarding the efficiency of the
transfer are reported. By default, verbose mode is on if
ftp's commands are coming from a terminal, and off oth-
erwise.
? [ command ]
A synonym for help.
Command arguments which have embedded spaces can be quoted
with quote (") marks.
If any command argument which is not indicated as being
optional is not specified, ftp prompts for that argument.
To abort a file transfer, use the terminal interrupt key.
Sending transfers is immediately halted. Receiving transfers
are halted by sending an FTP protocol ABOR command to the
remote server, and discarding any further data received. The
speed at which this is accomplished depends upon the remote
server's support for ABOR processing. If the remote server
does not support the ABOR command, an ftp> prompt does not
appear until the remote server has completed sending the
requested file.
The terminal interrupt key sequence is ignored when ftp has
completed any local processing and is awaiting a reply from
the remote server. A long delay in this mode can result from
the ABOR processing described above, or from unexpected
behavior by the remote server, including violations of the
ftp protocol. If the delay results from unexpected remote
server behavior, the local ftp program must be killed by
hand.
Local files specified as arguments to ftp commands are pro-
cessed according to the following rules.
1) If the file name - is specified, the standard input
(for reading) or standard output (for writing) is
used.
2) If the first character of the file name is |, the
remainder of the argument is interpreted as a shell
command. ftp then forks a shell, using popen(3C)
with the argument supplied, and reads (writes) from
the standard output (standard input) of that shell.
If the shell command includes <SPACE> characters,
the argument must be quoted; for example "| ls
-lt". A particularly useful example of this mechan-
ism is: "dir | more".
3) Failing the above checks, if globbing is enabled,
local file names are expanded according to the
rules used in the sh(1); see the glob command. If
the ftp command expects a single local file (for
example, put), only the first filename generated by
the globbing operation is used.
4) For mget commands and get commands with unspecified
local file names, the local filename is the remote
filename, which can be altered by a case, ntrans,
or nmap setting. The resulting filename can then
be altered if runique is on.
5) For mput commands and put commands with unspecified
remote file names, the remote filename is the local
filename, which can be altered by a ntrans or nmap
setting. The resulting filename can then be altered
by the remote server if sunique is on.
The FTP specification specifies many parameters which can
affect a file transfer.
The "representation type" can be one of "network ASCII",
"EBCDIC", "image", or "local byte size" with a specified
byte size (for PDP-10's and PDP-20's mostly). The "network
ASCII" and "EBCDIC" types have a further subtype which
specifies whether vertical format control (NEWLINE charac-
ters, form feeds, and so on) are to be passed through
("non-print"), provided in TELNET format ("TELNET format
controls"), or provided in ASA (FORTRAN) ("carriage control
(ASA)") format. ftp supports the "network ASCII" (subtype
"non-print" only) and "image" types, plus "local byte size"
with a byte size of 8 for communicating with TENEX machines.
The "file structure" can be one of file (no record struc-
ture), record, or page. ftp supports only the default value,
which is file.
The "transfer mode" can be one of stream, block, or
compressed. ftp supports only the default value, which is
stream.
See largefile(5) for the description of the behavior of ftp
when encountering files greater than or equal to 2 Gbyte (2
**31 bytes).
The ftp command is IPv6-enabled. See ip6(7P).
~/.netrc
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWbip |
|_____________________________|_____________________________|
| CSI | enabled |
|_____________________________|_____________________________|
ls(1), rcp(1), sh(1), tar(1), in.ftpd(1M), popen(3C),
ftp(4), ftpusers(4), mech(4), netrc(4), attributes(5), lar-
gefile(5), ip6(7P)
Allman, M., Ostermann, S., and Metz, C. RFC 2428, FTP Exten-
sions for IPv6 and NATs. The Internet Society. September
1998.
Lunt, S. J. RFC 2228, FTP Security Extensions. Internet
Draft. November 1993.
Postel, Jon, and Joyce Reynolds. RFC 959, File Transfer Pro-
tocol (FTP ). Network Information Center. October 1985.
Piscitello, D. RFC 1639, FTP Operation Over Big Address
Records (FOOBAR). Network Working Group. June 1994.
Failure to log in can arise from an explicit denial by the
remote FTP server because the account is listed in
/etc/ftpusers. See in.ftpd(1M) and ftpusers(4).
Correct execution of many commands depends upon proper
behavior by the remote server.
An error in the treatment of carriage returns in the 4.2 BSD
code handling transfers with a "representation type" of
"network ASCII" has been corrected. This correction can
result in incorrect transfers of binary files to and from
4.2 BSD servers using a "representation type" of "network
ASCII". Avoid this problem by using the "image" type.