ftp and sftp
This subchapter looks at ftp, a UNIX (and Linux) command.
ftp is FIle Transfer Protocol.
sftp is Secure FIle Transfer Protocol.
sample session
The following sample session shows how a simple ftp
session might go. This will give you context for the many specific details that follow.
$ ftp example.com
Connected to example.com
220 example FTP Server (Version x.x Mon Jan 20 05:32:40 EDT 2014) ready.
User (example.com:(none)): User-name
331 Password required for user-name
Password: password
230 User user-name logged in.
ftp> cd /directory
250 CWD command successful.
ftp> pwd
257 "/directory" is the current directory.
ftp> ls
random.txt
picture.png
226 transfer completed
ftp> ascii
200 Type set to A.
ftp> put filename.txt
200 PORT command successful.
Opening ASCII mode data connection for filename.txt
226 Transfer complete
ftp> quit
221 Goodbye.
$
formatting for this lesson
In the following examples, things you type will be in bold. Anything contained inside square braces [ ] is optional and anything outside of square braces is required. Braces inside braces indicate options that can be applied to options. The stroke or vertical bar character | indicates a choice enter only one of the choices. Elipses
indicate that you can have one, two, or mroe of the indicated item.
standard FTP
To start an FTP session, type ftp hostname
. The host name can be a named URL or an IP address. REMINDER: whenever possible, substitute sftp
for ftp
throughout this subchapter.
You will be asked for your userid and password.
To end the FTP session type either quit
or bye
.
Enter commands after the ftp>
prompt. to conduct your FTP session. Type help
to get a current list of commands available and type help
followed by a command to get help on a specific command.
All FTP commands are case sensitive and in lower case.
anonymous FTP
Some servers allow anonymous ftp access. Use anonymous
or ftp
as your userid. If you are asked for a logon password, your own email address or guest
will often be acceptable.
help
?
will give a list of available commands. If followed by the name of a specific command, it will give a brief description of that command. Works the same way as help
.
help
will give a list of available commands. If followed by the name of a specific command, it will give a brief description of that command. Works the same way as ?
.
rhelp
will get help from the remote server (which may have a different command set than the local machine). rhelp
is more commonly available than remotehelp
.
ftp> rhelp
remotehelp
will get help from the remote server (which may have a different command set than the local machine).
ftp> remotehelp [command-name]
connections
ftp
will connect to a remote FTP server. This command is given at the normal command shell to start FTP. Provide a host name (URL or IP address) and an optional port number.
$ ftp host-name [port]
sftp
will connect to a remote FTP server using secure SSH. This command is given at the normal command shell to start SFTP. Provide a host name (URL or IP address) and an optional port number.
$ sftp host-name [port]
open
will connect to a specified remote FTP host (by name or IP address). An optional port number may be supplied. If auto-login option is on (the default), then FTP will attempt to automatically log the user in t the FTP server.
ftp> open host-name [port]
account
will supply a supplemental password. Sometimes there is a need for an additional password to access specific resources (such as a password-protected directory). If no argument is included, the user willbe prompted for an account password in a non-echoing input mode.
ftp> account [password]
close
will terminate the FTP session. You can follow a close
command with a open
command to connect to a new host. This is the same as the disconnect
command. Any defined macors are erased.
ftp> close
disconnect
will terminate the FTP session. You can follow a disconnect
command with a open
command to connect to a new host. This is the same as the close
command.
bye
will terminate the FTP session and exit back to the shell. The same as quit
.
ftp> bye
quit
will terminate the FTP session and exit back to the shell. The same as bye
.
ftp> quit
file transfers
ascii
will set the FTP session for ASCII file transfers (the alternative is binary
). This is the default method.
binary
will set the FTP session for binary file transfers (the alternative is ascii
).
type
will set the file transfer type.
form
will set the file transfer format. The default format is file.
ftp> form format
mode
will set the file transfer mode. The default format is stream.
ftp> mode mode-name
struct
will set file transfer structure to struct-name
. The default is stream
structure.
ftp> struct struct-mode
xferbuf
will set the size of the socket send/receive buffer.
ftp> xferbuf size
get
will receive a file from the remote server. Name the file after the get
command. You may optionally follow with a second name which will assign the second file name to the local downloaded file. The same as recv
.
recv
will receive a remote file. Name the file after the recv
command. You may optionally follow with a second name which will assign the second file name to the local downloaded file. The same as get
.
mget
will get multiple remote files. If glob
is on, then you can use wildcards in specifying files. Toggle prompt
off if you dont want to be prompted for each file downloaded.
fget
will get files using a localfile as the source of the file names. That is, put the list of file names into a local file and then pass that file name to this command.
ftp> fget localfile
glob
will toggle metacharacter expansion of local file names.
put
will send one file to the remote server. Follow the put
command with the file to upload. Optionally include a second name to assign a different name to the file uploaded to the remote server. It is an error if the file does not exist on your local machine. The same as send
.
send
will send one file to the remote server. Follow the send
command with the file to upload. Optionally include a second name to assign a different name to the file uploaded to the remote server. It is an error if the file does not exist on your local machine. The same as put
.
append
will append to a file.
ftp> append local-file [remote-file]
mput
will send multiple files to the remote server. If glob
is on, then you can use wildcards in specifying files. Toggle prompt
off if you dont want to be prompted for each file uploaded.
delete
will delete a remote file.
mdelete
will delete multiple remote files.
rename
will rename a file on the remote server.
directory control
pwd
will print the current working directory on the remote server.
ftp> pwd
lpwd
will print the current local working directory.
ftp> lpwd
cd
changes the working directory on the remote server. Use lcd
to change the local working directory.
ls
will list the contents of a remote directory. Works the same as dir
. The listing will include any system-dependent information the server chooses to include. Most UNIX systems will produce the output of the command ls -l
. You may name a specific remote directory. Otherwise, the current remote working directory is listed. You may optionally also name a local file and the listing will be stored in the designated local file. If no local file is specified or the local file is -
, the output will be sent to the terminal.
ftp> ls [remote-path [local-file]]
dir
will list the contents of the remote directory. Works the same as ls
.
dir -C
lists the files in wide format.
dir --1
lists the files in bare format in alphabetic order.
dir --S
lists the files in bare format in alphabetic order.
dir --r
lists the files in reverse alphabetic order.
dir -R
lists all files in the current directory and sub directories.
lcd
will display the local working directory if typed by itself. If a path name follows the lcd command, it will change the local working directory. Use cd
to change the remote working directory.
mlst
will list the contents of the remote directory in a machine parsable form. It defaults to listing the current remote working directory.
ftp> mlst [remote-path]
mdir
will list the contents of multiple remote directories. Works the same as mls
.
mls
will list the contents of multiple remote directories. Works the same as mdir
.
mkdir
will make a directory on the remote server.
rmdir
will delete or remove a directory on the remote server.
ftp> rmdir directory-name
modtime
will show the last modification time and date for a remote file.
ftp> modtime remote-file
chmod
will change file permissions on a remote file.
ftp> chmod mode remote-file
toggles
cr
will toggle the stripping of carriage returns during ASCII type file retrieval. records are denoted by the sequence of carriage return/line feed sequence during ASCII type file transfer. When cr
is on, carriage returns are stripped to conform to the UNIX single linefeed record delimiter. This is the default. records on non-UNIX remote systems may contain single linefeeds and when an ASCII type file transfer is made, these linefeeds will only be distinguished from a record delimiter if cr
is off. The default is for cr
to be on.
ftp> cr [ on | off ]
debug
will toggle the debugging mode. If the optional debug value is provided, it is used to set the debugging level. When debugging is on, FTP prints each command sent to the remote server, preceded by the string -->
.
ftp> debug [ on | off | debuglevel ]
gate
will toggle the gate-ftp. Specify the optional host[:port] to change the proxy.
ftp> gate [ on | off | gateserver [port] ]
glob
will toggle metacharacter expansion of local file names.
hash
will toggle printing #
for each buffer of 1,024 (1 kilobyte) of data is transferred.
passive
will toggle the use of passive transfer mode.
ftp> passive [ on | off | auto ]
sunique
will toggle storing of files under unique file names on the remote server. Remote FTP server must support the FTP protocol STOU command for successful completion. The remote server will report unique names. The defauly is off.
ftp> sunique [ on | off ]
trace
will toggle packet tracing.
verbose
will toggle the verbose mode. In verbose mode, all responses from the FTP server are displayed to the local user. When a file transfer completes, verbose mode also provides statistics about the effiency of the file transfer. By default, verbose is on.
ftp> verbose [ on | off ]
pagers
Some versions of command line FTP will allow you to read the contents of remote files in a local pager (such as less or more).
page
will view a remote file through your local pager.
ftp> page remote-file
less
will view a remote file through the pager named less
.
ftp> less remote-file
more
will view a remote file through the pager named more
.
ftp> more remote-file
pdir
will list the contents of a remote path through your local pager. You can designate a specific remote path or default to the remote server current working directory.
ftp> pdir [remote-path]
lpage
will view a local file through your local pager.
ftp> lpage local-file
other commands
prompt
will force interactive prompting on multiple commands.
system
will show the operating system running on the remote server.
ftp> system
status
will show the current status.
rstatus
will show the current status of the remote server. If a file name is specified, it will show the status of the file on the remote server.
ftp> rstatus [remote-file]
remotestatus
will show the current status of the remote server. If a file name is specified, it will show the status of the file on the remote server.
ftp> remotestatus [remote-file]
user
will send new user information.
!
Escape the the shell. Type exit
to return to the FTP session. You can follow !
with a specific command. If you type a command, then all the following text will be considered as arguments for that command.
ftp> ! [command [args]]
ftp> !
$ unix_command
command results
$ exit
ftp>
bell
will beep when a command is completed.
literal
will send an arbitrary FTP command with an expected one line reponse. The same as quote
.
macro
will execute the designated macro macro-name
. The macro macro-name
must have been defined with the macdef
command. Arguments passed to the macro are unglobbed.
ftp> $ macro_name [args]
quote
will send an arbitrary command to the remote server. The same as literal
. All arguments are sent veratim to the remote FTP server.
ftp> quote line-to-send [ arg1 arg2
]
FileZilla
FileZilla Client is a free, open source FTP client that supports FTP, SFTP, and FTPS (FTP over SSL/TLS). It is available for many operating systems and there are binaries available for Windows, Linux, and Mac OS X. The source code is hosted at http://sourceforge.net/projects/filezilla. The binaries can be found at https://filezilla-project.org/download.php.
While FileZilla is intended as a graphic interface for FTP, the client will accept command line.
Use the command filezilla [<FTP URL>]
to connect to a server. The form of the URL should be [protocol://][user[:pass]@]host[:port][/path]
. Valid protocols include ftp://, ftps://, ftpes://, or sftp://. The default is ordinary ftp.
Use the option -c
or --site=<string>
to connect to the specified Site Manager site.
Use the option -a
or --local=<string>
to set the local directory from which you will be uploading files.
Putting this together, the following example will connect to the site example.com by ftp protocol using the user name and password and sets the local folder (directory) to uploads in the current users home directory:
$ filezilla ftp://username:password@ftp.example.com --local="~/uploads"
Use the -l
or ---logontype=(askinteractive)
flag to have FileZilla interactively ask for login information. This option is useful for scripting.
other
On November 8, 2010, Ramesh Natarajan named this the number 19 most frequently used UNIX/Linux command at this web page 50 Most Frequently Used UNIX / Linux Commands (With Examples).
In June 2009, Ken Milberg named this command as one of the Top 50 universal UNIX commands at this web page Top 50 Universal INIX commands. Note that this web page requires agreeing to be spammed before you can read it.
comments, suggestions, corrections, criticisms
free music player coding example
Coding example: I am making heavily documented and explained open source code for a method to play music for free almost any song, no subscription fees, no download costs, no advertisements, all completely legal. This is done by building a front-end to YouTube (which checks the copyright permissions for you).
View music player in action: www.musicinpublic.com/.
Create your own copy from the original source code/ (presented for learning programming).
Because I no longer have the computer and software to make PDFs, the book is available as an HTML file, which you can convert into a PDF.
Names and logos of various OSs are trademarks of their respective owners.