Ein weiterer zentraler Dienst in einem Intranet, der besonders dem Transport von Dateien auf andere Systeme dient, ist das File-Transfer-Protokoll. Die Besonderheit des Protokolls liegt in den getrennten Kanälen für die Daten und die Steuerung. Im RFC 959 ist für FTP TCP-Port 20 als Steuerungskanal und TCP-Port 21 als Datenkanal festgelegt. FTP verwendet als Transportprotokoll immer TCP, da dieses bereits einen sicheren Datentransfer garantiert und die FTP-Software sich nicht darum zu kümmern braucht. FTP besitzt eine eigene Kommandooberfläche, die interaktiv bedient wird. Der Aufruf dieses Filetransferprogrammes erfolgt durch das Kommando ftp.
Die Vorteile von FTP liegen in den effizienten Verfahren zur übertragung von Dateien beliebigen Formats und der Tatsache, daß der Zugriff seitens beliebiger Internet-Teilnehmern möglich ist. Andererseits kann bei größeren Archiven schnell die übersicht verlorengehen, wenn die Datenbestände nicht vernünftig sortiert sind. Bei umfangreichen Dateibäumen ist hingegen die Navigation durch die Verzeichnisse eine zeitraubende Angelegenheit. Es werden weiterhin zwei Betriebsmodi unterschieden:
- Benutzerspezifisches FTP
- Anonymous-FTP

Der Kommandoaufruf des FTP-Kommandos lautet
ftp [ -v ] [ -d ] [ -i ] [ -n ] [ -g ] [ host ]
Wird beim Programmaufruf der gewünschte Kommunikationspartner (host) mit angegeben, so wird sofort versucht, eine Verbindung zu diesem Rechensystem aufzubauen. Ist der Versuch erfolglos, so wird in den Kommandomodus umgeschaltet. Der Prompt "ftp>" erscheint immer auf dem Bildschirm, wenn ftp-Kommandos eingegeben werden können. ftp verfügt über einen help-Mechanismus, über den sämtliche auf dem jeweiligen System verfügbare Kommandos mit Kurzerklärungen abfragbar sind.
Nachfolgend werden wesentliche Kommandos nach Funktionalität gruppiert vorgestellt. Kommandos können soweit verkürzt eingegeben werden, als sie noch eindeutig erkennbar sind. Enthalten Kommandoargumente "Blanks", so sind die Argumente beidseitig mit Hochkommas eingeschlossen einzugeben. Nicht alle ftp-Implementierungen unterstützen alle ftp-Kommandos.
- help [ kommando ]
zeigt kurze Informationen zu dem angegebenen Kommando. Wird das Kommando weggelassen, zeigt dieser Aufruf eine Liste der zulässigen Kommandos. - open host
Öffene einer Verbindung zu einem fernen Host. Je nach angewähltem System werden Benutzerkennung und Passwort abgefragt. - user user-name [ password ]
Eingabe von Benutzerkennung und Passwort. - !
Aufruf einer (eingeschränkten) Shell auf dem lokalen System. Für Dateiübertragung relevante Kommandos wie mkdir, mv, cp, etc sind absetzbar. Verlassen wird diese Shell mit "exit". - lcd [directory ]
Wahl des lokalen Directories für die Dateiübertragung. - pwd
Anzeige des aktuellen Directories auf dem entfernten System. - cd remote-directory
Wahl des aktuellen Directories auf dem entfernten System. - cdup
Wechsel in das nächsthöhere Directory auf dem entfernten System. - dir [ remote-directory [ local-file ] ]
ls [ remote-directory [ local-file ] ]
Ohne Optionen erfolgt eine Anzeige der Einträge des entfernten aktuellen Directories. Dabei liefert dir ausführliche und ls eine knappe Information bezüglich des Directory-Inhalts.
Bei Angabe des remote-directory erfolgt die Anzeige der Einträge des entfernten Directories. Wird local-file angegeben, erfolgt eine Umlenkung der Directory-Anzeige in die Datei local-file auf dem lokalen System. - mdir remote-files [ local-file ]
mls remote-files [ local-file ]
Anzeige von Dateien aus dem entfernten aktuellen Directory und Abspeicherung in eine lokale Datei. - mkdir directory-name
Einrichten eines neuen Directories directory-name auf dem entfernten System. - rmdir directory-name
löscht das Directory directory-name auf dem entfernten System. - rename [ from ] [ to ]
Umbenennen einer Datei auf dem entfernten System von from nach to. - delete remote-file
Löschen der Datei remote-file auf dem entfernten System. - mdelete remote-files
Löschen mehrerer Dateien remote-files auf dem entfernten System. - put local-file [ remote-file ]
send local-file [ remote-file ]
Dateiübertragung der Datei local-file vom lokalen zum entfernten System. Wird remote-file nicht angegeben, so wird auch auf dem Zielsystem der Dateiname local-file verwendet. - append local-file [ remote-file ]
überträgt die Datei local-file vom lokalen System an das entfernte System und hängt diese am Ende der Datei remote-file an. Wurde remote-file nicht angegeben, wird die Datei ans Ende der Datei local-file auf dem entfernten System angehängt. - mput local-files
Dateiübertragung einer Dateigruppe namensgleich vom lokalen zum entfernten System. - get remote-file [ local-file ]
recv remote-file [ local-file ]
Dateiübertragung einer Datei remote-file vom entfernten System zum lokalen System. Wird local-file nicht mitangegeben, so erhält die Datei auch auf dem lokalen System den Dateiname remote-file. - mget remote-files
Dateiübertragung einer Dateigruppe namensgleich vom entfernten zum lokalen System. - ascii
type ascii
Die Dateiübertragung findet im ASCII-Code statt. Gegebenfalls werden Bei Binärdateien Zeichen verändert (z. B. die Zeilenendedarstellung ans Zielsystem angepaßt) oder Zeichen verfälscht. - binary
type image
type binary
Die Dateiübertragung findet transparent statt. - case
Mit diesem Schalter läßt sich einstellen, ob Dateinamen beim Empfangen (get, recv, mget) von Großbuchstaben nach Kleinbuchstaben übersetzt werden sollen. - glob
Mit diesem Schalter läßt sich einstellen, ob bei den Kommandos mdelete, mget und mput bei Dateinamen, die Metazeichen (*?[]~{}) enthalten, diese Metazeichen übertragen werden oder nicht. ("off" = keine Metazeichenbehandlung). - ntrans [ inchars [ outchars ] ]
Definition und Aktivierung einer Übersetzungstabelle für Dateinamen, wenn beim Dateiübertragungsauftrag (Senden und Empfangen) keine Zieldateinamen angegeben werden. Zeichen eines Dateinamens, die in inchars zu finden sind, werden durch das positionsgleiche Zeichen in outchars übersetzt. Ist inchars länger als outchars, so werden die korrespondenzlosen Zeichen von inchars aus dem Zieldateinamen entfernt. - prompt
Mit diesem Zeichen wird bei Mehrdateienübertragung gesteuert, ob jede zu übertragende Datei extra quittiert werden muß oder nicht. - verbose
Wenn der "verbose"-Modus eingeschaltet ist, erhält man für jede übertragene Datei den Dateinamen auf dem lokalen und entfernten Rechner, sowie die Datenmenge und die dafür benötigte Übertragungszeit angezeigt. - bell
Dieser Schalter bewirkt, daß je nach Stellung am Ende jedes Dateiübertragungsauftrages ein akustisches Signal ertönt oder nicht. - status
Anzeige der aktuellen logischen Schalterstellungen sowie des Verbindungszustandes. - close
disconnect
Beendigung einer aktiven Verbindung. - quit
Beendigung des Programmes ftp. - bye
Beendigung einer aktiven Sitzung und des Programmes ftp.
Die optionalen Parameter beim ftp-Kommando setzen logische Schalter für den ftp-Programmlauf. Im Kommandomodus sind die Einstellungen jederzeit wieder änderbar.
- -v verbose-Schalter einschalten.
- -d debug-Schalter einschalten.
- -i interactive-Modus für Mehrdateiübertragung einschalten.
- -n verhindert, daß FTP zum Beginn der Sitzung einen Login-Versuch unternimmt.
- -g glob-Schalter einschalten.
Die Datei-Übertragung wird durch die Terminal "interrupt"-Taste (üblicherweise Ctrl-C) abgebrochen, was einen sofortigen Abbruch zur Folge haben soll. Nicht alle Kommunikationspartner verstehen die Abbruchaufforderung, wodurch dennoch die gesamte Datei übertragen ausgeführt wird.
Dateinamen, die als Argumente von FTP-Kommandos Verwendung finden, werden wie folgt bearbeitet: Ist "file globbing" eingeschaltet, werden bei den Kommandos mget, mput und mdelete die Namen lokaler Dateien folgendermaß behandelt:
- Der * steht für eine beliebige Anzahl (auch Null) von Zeichen.
- Das ?steht für ein einziges beliebiges Zeichen.
- Wird im Dateinamen eine Zeichenfolge angetroffen, die zwischen eckigen Klammern oder zwischen geschweiften Klammern steht, so sind alle Dateinamen zutreffend, die an dieser Stelle ein einziges beliebiges Zeichen aus der Zeichenfolge innerhalb der Klammern enthalten.
- Steht die Zeichenfolge ~/ (Tilde, Schrägstrich) am Beginn des Dateinamens, so wird sie durch den Home-Directory-Pfad ersetzt. Das Zeichen ~, dem eine Benutzerkennung folgt, wird durch den Home-Directory-Pfad dieser Benutzerkennung ersetzt.
Kommandos und Protokoll-Anweisungen:
| ftp-Client | FTP-Protokoll | Aufgabe |
| login | USER username PASS password |
anmelden |
| help help command |
HELP HELP command |
Hilfe |
| SYST | Server-Identifikation | |
| status | STAT | Transfer-Status |
| STAT path | wie LIST, über control-Verbindung | |
| dir path | LIST path | Kataloginhalt zeigen, ausführlich |
| ls path | NLST path | Dateinamen zeigen |
| delete path | DELE path | Datei löschen |
| rename from to | RNFR from-path RNTO to-path |
Datei umbenennen |
| pwd | PWD | Arbeitskatalog zeigen |
| cd path | CWD path | Katalog wechseln |
| mkdir path | MKD path | Katalog erzeugen |
| rmdir path | RMD path | Katalog löschen |
| ascii | TYPE A N | Textübertragung (Voreinstellung) |
| binary | TYPE I | Datenübertragung |
| PORT h,h,h,h,p,p | Port des Klienten für data-Verbindung | |
| get remote-path | RETR path | Datei zum Klienten übertragen |
| put local-path | STOR path | Datei zum Server übertragen |
| append local-path | APPE path | an Datei auf Server anfügen |
| interrupt | ABOR | _bertragung abbrechen |
| quit | QUIT | Verbindung beenden |
Beispiel
Benutzereingaben sind fett gedruckt.ftp multimedia.ee.fhm.edu Verbindung mit multimedia.ee.fhm.edu. 220 ProFTPD 1.2.2rc2 Server [multimedia.e-technik.fh-muenchen.de] Benutzer (multimedia.ee.fhm.edu:(none)): plate 331 Password required for plate. Kennwort: 230 User plate logged in. Ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for file list. tmp Mail bin 226 Transfer complete. Ftp: 36 Bytes empfangen in 0.00Sekunden 36000.00KB/Sek. Ftp> cd tmp 250 CWD command successful. Ftp> lcd E:\www-netzmafia\skripten\perl Lokales Verzeichnis jetzt E:\www-netzmafia\skripten\perl. Ftp> cd /opt/www/skripten/perl 250 CWD command successful. Ftp> put perl3.html 200 PORT command successful. 150 Opening ASCII mode data connection for perl3.html. 226 Transfer complete. Ftp: 77604 Bytes gesendet in 9.17Sekunden 8.46KB/Sek. Ftp> put perl4.html 200 PORT command successful. 150 Opening ASCII mode data connection for perl4.html. 226 Transfer complete. Ftp: 30930 Bytes gesendet in 3.24Sekunden 9.55KB/Sek. Ftp> quit

