The File Transfer Protocol (FTP) is the standard network protocol used for the transfer of computer files between a client and server on a computer network.
Syntax
FTP [-options] [-s:filename] [-w:buffer] [host]
Key
switch | description |
---|---|
-s:filename | Run a text file containing FTP commands. |
host | Host name or IP address of the remote host. |
-g | Disable filename wildcards. |
-n | No auto-login. |
-i | No interactive prompts during ftp. |
-v | Hide remote server responses. |
-w:buffer | Set buffer size to buffer (default=4096) |
-d | Debug |
-a | Use any local interface when binding data connection. |
FTP Commands
These are commands that can be run while in an FTP session.
command | description |
---|---|
append local-file [remote-file] | Append a local file to a file on the remote computer. |
ascii | Set the file transfer type to ASCII, the default. In ASCII text mode, character-set and end-of-line characters are converted as necessary. |
bell | Toggle a bell to ring after each command. By default, the bell is off. |
binary | Set the file transfer type to binary. Use “Binary” for transferring executable program files or binary data files e.g. Oracle |
bye | End the FTP session and exit ftp |
cd | Change the working directory on the remote host. |
close | End the FTP session and return to the cmd prompt. |
debug | Toggle debugging. When debug is on, FTP will display every command. |
delete remote-file | Delete file on remote host. |
dir [remote-directory] [local-file] | List a remote directory’s files and subdirectories. (or save the listing to local-file) |
disconnect | Disconnect from the remote host, retaining the ftp prompt. |
get remote-file [local-file] | Copy a remote file to the local PC. |
glob | Toggle the use of wildcard characters in local pathnames. By default, globbing is on. |
hash | Toggle printing a hash (#) for each 2K data block transferred. By default, hash mark printing is off. |
help [command] | Display help for ftp command. |
lcd [directory] | Change the working directory on the local PC. By default, the working directory is the directory in which ftp was started. |
literal argument [ …] | Send arguments, as-is, to the remote FTP host. |
ls [remote-directory] [local-file] | List a remote directory’s files and folders. (short format) |
mdelete remote-files [ …] | Delete files on remote host. |
mdir remote-files [ …] local-file | Display a list of a remote directory’s files and subdirectories. (or save the listing to local-file) Mdir allows you to specify multiple files. |
mget remote-files [ …] | Copy multiple remote files to the local PC. |
mkdir directory | Create a directory on the remote host. |
mls remote-files [ …] local-file | List a remote directory’s files and folders. (short format) |
mput local-files [ …] | Copy multiple local files to the remote host. |
open computer [port] | Connects to the specified FTP server. |
prompt | Toggle prompting. Ftp prompts during multiple file transfers to allow you to selectively retrieve or store files; mget and mput transfer all files if prompting is turned off. By default, prompting is on. |
put local-file [remote-file] | Copy a local file to the remote host. |
pwd | Print Working Directory (current directory on the remote host) |
quit | End the FTP session with the remote host and exit ftp. |
quote argument [ …] | Send arguments, as-is, to the remote FTP host. |
recv remote-file [local-file] | Copy a remote file to the local PC. |
remotehelp [command] | Display help for remote commands. |
rename filename newfilename | Rename remote files. |
rmdir directory | Delete a remote directory. |
send local-file [remote-file] | Copy a local file to the remote host. |
status | Display the current status of FTP connections and toggles. |
trace | Toggles packet tracing; trace displays the route of each packet |
type [type-name] | Set or display the file transfer type “binary” or “ASCII” (the default). If type-name is not specified, the current type is displayed. ASCII should be used when transferring text files. In ASCII text mode, character-set and end-of-line characters are converted as necessary. Use “Binary” for transferring executable files. |
user user-name [password] [account] | Specifes a user to the remote host. |
verbose | Toggle verbose mode. By default, verbose is on. |
! command | Run command on the local PC. |
? [command] | Display help for ftp command.An example FTP Script to retrieve files in binary and ascii mode |
Scripting FTP
It is easily possible to automate an FTP session. However, be warned that credentials are stored in plain text, so it inherently insecure. Here is a sample script:
::GetFiles.ftp
[User_id]
[ftp_password] binary
get /usr/file1.exe
get file2.html
mget *.jpeg ascii
mget *.txt quit
To run the above script:
FTP -s:GetFiles.ftp [hostname]
This will connect as the user:User_id with password:ftp_password
An FTP Script to publish files in binary mode:
::PutFiles.ftp
[User_id]
[ftp_password] binary
mput *.html
cd images
mput *.gif quit
To run the above script:
FTP -s:PutFiles.ftp [hostname]
This will connect as the user:User_id with password:ftp_password
This can be further automated by constructing the FTP file using a series of ECHO commands. Also you may want to put the main FTP command inside a batch script, which also CD’s to the correct local folder before transferring any files.
If you do use this automation method, don’t forget to delete/protect the script file if it contains a valid password.