# Ftp (Software)

ftp ist ein fast auf jedem Betriebssystem verfügbarer interaktiver Terminal-Client für das Datenübertragungsprotokoll File Transfer Protocol (FTP). Der ursprünglich für Unix programmierte Client wurde schon bald auf andere Betriebssysteme (z. B. Windows NT) portiert.

## Benutzung und Funktionen

Das Programm ftp wird meist mit einem Kommandozeilenbefehl gestartet, oft mit Angabe eines FTP-Servers als Argument, zu dem man Kontakt aufnehmen möchte:
Bei erfolgreicher Verbindung fragt das Programm dann üblicherweise nach Benutzername und Passwort und gelangt nach abgeschlossenem Login in den Zustand, in dem es, einer Shell ähnlich, Kommandos vom Benutzer erwartet. Diese Kommandos werden jeweils mit der Enter-Taste bestätigt und anschließend ausgeführt. Erst nach der vollständigen Ausführung eines Kommandos erscheint wieder die Befehlszeile und der Benutzer kann fortfahren, Kommandos einzugeben.
Der Client ftp erlaubt das Definieren von sogenannten Makros, die dazu dienen eine komplexe Befehlskette mit einem einzigen Befehl auszuführen. Das Erstellen eines Makros geht folgendermaßen vor sich: Der Benutzer startet die Aufnahme des Makros mit dem Befehl macdef makroname. Daraufhin werden alle Zeilen, die der Benutzer eingibt aufgezeichnet, bis er die Aufzeichnung mit einer Leerzeile beendet. Die aufgezeichneten Befehle werden ausgeführt, sobald $makroname eingegeben wird. Es können höchstens 16 Makros definiert werden, die insgesamt nicht mehr als 4096 Zeichen enthalten dürfen.

## Kommandos

Die Eingabe der Befehle erfolgt analog zu der Eingabe von Befehlen in einem Terminal. Folgende Kommandos stehen zur Verfügung:

### ![command]

    Führt ein Shell-Kommando aus bzw. wechselt zur Shell (ohne [command]).
    Äquivalent zu help.

### account

    Sendet das account Kommando an den Server.

### append [local_file] [remote_file]

    Kopiert den Inhalt einer lokalen Datei [local_file] an das Ende der Datei [remote_file] auf dem Server.

### ascii

    Einstellen von ASCII als Übertragungsmodus. Dies ist der Standardübertragungsmodus. Dateien, die in diesem Modus übertragen werden, erfahren eine Konvertierung zwischen den verschiedenen Zeilenumbruchvarianten der an der Übertragung beteiligten Betriebssysteme. Dieser Modus ist nur sinnvoll, wenn zwei Betriebssysteme mit unterschiedlicher Zeilenumbruchskodierung als Server bzw. Client agieren.

### bell

    Schaltet den Signalton nach Befehlsausführung ein/aus.

### binary

    Einstellen von binary als Übertragungsmodus. Der Standardübertragungsmodus ist ASCII. Für Binärdateien sollte zu diesem Modus umgeschaltet werden, damit nicht versehentlich zufällige Bytekombinationen, die die zu konvertierenden Zeilenumbruch-Bytes darstellen, verändert werden und damit die Binärdatei im schlimmsten Fall unbrauchbar gemacht wird.

### bye

    Schließt die Verbindung zum Server und beendet das Programm.

### cd [remote_directory]

    Wechselt in das Arbeitsverzeichnis [remote_directory] in der Verzeichnisstruktur auf dem Server. Vgl. das gleichlautende Unix-Kommando cd

### cdup

    Wechselt in die nächsthöhere Verzeichnisebene auf dem Server. Vgl. das ähnlichlautende Unix-Kommando cd ..

### chmod [datei]

    Verändert die Unix-Dateirechte der Datei [datei], der Syntax entspricht dabei dem des Unix-Kommandos chmod.

### close

    Schließt die Verbindung zum Server und löscht alle Makros. Das ftp-Programm wird jedoch nicht beendet, sodass man anschließend beispielsweise mit dem open-Kommando eine neue FTP-Verbindung herstellen kann.

### delete [remote_file]

    Löscht die Datei [remote_file] auf dem Server.

### dir

    Zeigt den Inhalt des aktuellen Arbeitsverzeichnisses auf dem Server an. Gleichlautend mit dem Befehl der Windows-Eingabeaufforderung dir. Äquivalent zu dem Befehl ls

### disconnect

    Äquivalent zu close.

### get [remote_file] ([local_file])

    Kopiert die Datei [remote_file] vom Server auf den Client und speichert sie unter dem Namen [local_file]. Ist [local_file] nicht gegeben, wird sie unter dem ursprünglichen Namen abgespeichert.

### hash

    Stellt ein, dass für jeden übertragenen Datenblock ein Doppelkreuz (#) ausgegeben werden soll. Sinnvoll bei der Übertragung von großen Dateien, da ftp ansonsten keinerlei Informationen über den Fortschritt der Datenübertragung ausgibt.

### help ([Kommando])

    Gibt Informationen über das Client-Kommando [Kommando] aus. Ist kein Kommando gegeben, wird eine Liste aller verfügbaren Kommandos ausgegeben. Siehe auch remotehelp.

### lcd ([local_directory])

    Wechselt in das Verzeichnis [local_directory] auf dem Client. Ist kein Verzeichnis angegeben, wird in das Heimatverzeichnis des aktuellen Benutzers gewechselt. Die Funktionsweise ist auf diese Weise synonym zu dem Unix-Kommando cd.

### ls [remote_directory] ([local_file])

    Gibt eine Kurzform des Verzeichnisses [remote_directory] aus und leitet die Ausgabe, wenn gegeben, in die Datei [local_file] auf dem Client-Rechner um. Vgl. das gleichlautende Unix-Kommando ls

### mget [remote_files]

    Kopiert mehrere Dateien vom Server auf den Client. Wildcards sind erlaubt. Im interaktiven Modus muss eine Bestätigung jedes Dateitransfers erfolgen.

### mkdir [remote_directory]

    Erstellt das Verzeichnis [remote_directory] auf dem Server. Vgl. das gleichlautende Unix-Kommando mkdir

### mput [local_files]

    Kopiert mehrere Dateien vom Client auf den Server. Wildcards sind erlaubt. Im interaktiven Modus muss eine Bestätigung jedes Dateitransfers erfolgen.

### open [host] ([port])

    Baut eine Verbindung zum FTP-Server [host] auf TCP-Port [port] auf.

### passive

    Schaltet den passiven FTP-Modus ein bzw. aus.

### prompt

    Schaltet den interaktiven Modus ein/aus, der bei einigen Kommandos (z. B. mget) zu Nachfragen führt. Standardmäßig wird der Benutzer gefragt.

### put [local_file] ([remote_file])

    Kopiert eine Datei [local_file] zum Server und legt sie dort unter dem Namen [remote_file] ab. Ist [remote_file] nicht gegeben, wird der ursprüngliche Dateiname beibehalten.

### pwd

    Gibt das aktuelle Arbeitsverzeichnis auf dem Server aus. Vgl. das gleichlautende Unix-Kommando pwd.

### quit

    Äquivalent zu bye.

### remotehelp ([Kommando])

    Gibt Informationen über das Server-Kommando [Kommando] aus. Ist kein Kommando gegeben, wird eine Liste aller verfügbaren Kommandos ausgegeben. Siehe auch help.

### rename [from] [to]

    Benennt die auf dem Server liegende Datei [from] in [to] um.

### rmdir [remote_directory]

    Löscht das Verzeichnis [remote_directory] auf dem Server. Wie üblich auf Unix-Systemen können nur leere Verzeichnisse gelöscht werden. Daher muss der Client vorher rekursiv das Verzeichnis durchgehen und alle Dateien darin löschen.

### runique

    Verbietet das Überschreiben von Dateien auf dem Client-Rechner, indem an den Dateinamen eine Endung in Form von .Zahl angehängt wird.

### send [local_file] ([remote_file])

    Äquivalent zu put.

### status

    Gibt Statusinformationen aus.

### sunique

    Wie runique nur für Dateien auf dem Server.

### type ([type])

    Festlegen des Übertragungsmodus (ASCII,IMAGE). Fehlt [type], wird der aktuell verwendete Übertragungsmodus ausgegeben. Vgl. die Kommandos binary und ascii weiter oben, die die gleiche Aufgabe erfüllen.

### user [username] [password]

    Anmelden am FTP-Server mit dem Benutzernamen [username] und dem Passwort [password].

### verbose

    Schaltet den ausführlichen Anzeigemodus ein/aus.

## Implementierungen

Es existieren diverse Implementierungen für verschiedenste Unix-Derivate sowie für Windows ab Windows 95. Für Windows für Workgroups 3.11 waren FTP und Telnet im nachzuinstallierenden TCP/IP-Paket enthalten.