next up previous contents
Next: Interaktives Arbeiten mit Telnet Up: Die TCP/IP-Anwendungen Previous: Die TCP/IP-Anwendungen

Dateitransfer mit ftp

ftp, das ,,file transfer protocol`` ist ein eigenständiges Programm und zugleich Name des Protokolls der Anwendungsebene, das diese Dienstleistung realisiert. Einzige Voraussetzung für die Benutzung ist die Kenntnis von Namen oder IP-Adresse des fremden Hosts. ftp wird vom Prompt durch die Eingabe von ftp aufgerufen, woraufhin es sich mit seinem eigenen Prompt

ftp>

meldet. Die Verbindung zu einem Rechner wird durch die Eingabe von open [Rechnername] aufgenommen. Soll nun beispielsweise eine der AIX-Workstations im Rechenzentrum angesprochen werden, so muß entweder die IP-Adresse

ftp> open 134.100.33.12

oder der Hostname

ftp> open rzaixsrv2-fi.rrz.uni-hamburg.de

verwendet werden. Bei einem erfolgreichen Verbindungsaufbau meldet sich der fremde Host nach einer gewissen, von seiner eigenen und den Übertragungswegen abhängigen Auslastung mit der Aufforderung zur Eingabe von User-ID und Paßwort. Wenn keine Verbindung aufgebaut wird, ist als erstes zu prüfen, ob der Name richtig ist; bei Erscheinen der Meldung unknown host ist er mit ziemlicher Sicherheit falsch. Ansonsten kann es auch sein, daß die Verbindungsstrecken überlastet sind und in der zur Verfügung stehenden Zeit keine Kommunikation etabliert werden konnte. In diesem Fall sollte bis zum Neuversuch eine kurze Zeit gewartet werden. Desgleichen kann der entfernte Host für Wartungsarbeiten oder ähnliches vom Netz genommen worden sein.

Bevor Daten transportiert werden, sollte stets geprüft werden, in welchem Verzeichnis man sich befindet.[*] Die sich auf die Verzeichnisdienste beziehenden Befehle sind nachfolgend aufgeführt:




 
Abbildung: Schematischer Aufbau des Universitätsnetzes (auszugsweise)
Befehl Lokal/Fern Wirkung
ls (list) F Dateien in Kurzform auflisten
ls -l (list long) F Dateien in Langform listen
dir (directory) F äquivalent zu ls -l
cd [Dir] (change directory) F in Unterverzeichnis wechseln
cd .. F in das nächsthöhere Verzeichnis wechseln
cd / F in das Hauptverzeichnis wechseln
pwd (print working dir) F Aktuelles Verzeichnis zeigen
mkdir [Dir] F Verzeichnis erstellen
rmdir [Dir] F Verzeichnis löschen
rm [Datei(en) (remove) F Dateien löschen
lcd [Dir] L in lokales Verzeichnis wechseln
!cd [Dir] L wie lcd
lls L Dateien im lokalen Verzeichnis listen
!ls L wie lls




Bei Verzeichniswechseln auf Unix-Maschinen ist zu beachten, daß der Verzeichnistrenner unter Unix im Gegensatz zu MS-DOS oder OS/2 ein normaler Schrägstrich (/) ist. Es gibt jedoch eine ,,slash-Übersetzung``, die mit dem Befehl slash wahlweise ein- und ausgeschaltet werden kann, so daß wahlweise ,,/`` oder ,,$\backslash$`` verwendbar sind. Zwischen dem Befehl cd und zwei Punkten muß ein Leerschritt eingehalten werden.

Die einfache Eingabe des Kommandos läßt den Bildschirm ohne anzuhalten ,,durchrauschen``. Um diesen Output temporär zu stoppen, ist [Strg]+[S] zu drücken. Die Bildschirmanzeige hält daraufhin an; zum Weiterlaufenlassen wird [Strg]+[Q] betätigt. Auf der PC-Ebene wird diese Unix-Funktion allerdings nicht immer korrekt interpretiert. Alternativ ist es daher einfach möglich, die [Pause]-Taste zu verwenden.

Vor dem Datentransfer muß geprüft werden, welche Kodierung die zu übertragenden Daten haben. Dateien können entweder reines Textformat -- ASCII -- oder Binärformat haben. Andere Betriebssysteme verwenden andere Zeichensätze als MS-DOS. ASCII-Dateien sollten daher durch den systemabhängigen Teil von ftp konvertiert werden, weil sonst Zeichen falsch dargestellt werden. Umgekehrt ist es aber nötig, Binärdateien 1:1 ohne Konvertierung zu übertragen, weil sonst Programmcode verfälscht wird, was im übrigen auch für archivierte (mit pkzip oder ähnlichem behandelte) Textdateien gilt. Eigene Daten wie etwa SPSS-Portfiles sind dagegen meistens im ASCII-Format, Textdateien (sofern sie programminterne Kodierungen enthalten wie von Word oder WordPerfect) dagegen binär. Eine inkorrekte Einstellung kann die Daten unbrauchbar machen. Die Kodierung wird geändert durch die Eingabe von entweder

ftp> ascii

worauf die Meldung type set to ascii erscheint oder mit

ftp> binary

was mit type set to binary quittiert wird.[*] Der Befehl

ftp> type

zeigt die gerade aktuelle Einstellung an.

Wenn große Dateien kopiert werden, ist es sinnvoll, eine Markierung zu aktivieren, die den Stand dieses Prozesses anzeigt. Ein- und ausgeschaltet wird diese durch die Eingabe von

ftp> hash

Pro übertragenem kB erscheint ein ,,#`` .

Nun zum Übertragen von Dateien. Daten von der eigenen Maschine auf eine fremde werden mit dem Befehl put geschickt. Die Syntax ist dabei

ftp> put [lokales LW/Pfad/Datei] [remote LW/Pfad/Datei]

Wenn also beispielsweise die Datei ,TEST.DAT` vom lokalen Verzeichnis ,C:$\backslash$DATEN` auf einen unter Unix laufenden Host in das Verzeichnis ,/DAT` kopiert werden soll, ist folgendes einzugeben:

ftp> put c:$\backslash$daten$\backslash$test.dat /DAT/test.dat

wobei die Angabe des Dateinamens auf dem fremden Host optional ist; in diesem Fall wird der ursprüngliche Name beibehalten. Mit den Befehlen cd und lcd können auch vorher die richtigen Verzeichnisse gewählt werden, so daß das Kopieren der eben angegebenen Datei auch folgendermaßen möglich wäre:

ftp> lcd c:$\backslash$daten

was durch die Meldung Local directory now C:$\backslash$DATEN quittiert wird und

ftp> cd /DAT

mit der Bestätigung CWD command successful (oder einer ähnlichen), woraufhin die Datei mit

ftp> put test.dat test.dat

kopiert wird. Beim Transfer von Dateien sollte stets auf die richtige Verzeichniswahl geachtet werden, da hier erfahrungsgemäß viele Fehler auftauchen. Wenn bei put kein lokales Laufwerk oder ein Pfad angegeben wurde, so versucht ftp die Datei in dem Verzeichnis zu finden, von dem aus es gestartet wurde.

Beim Kopieren ist es also möglich, den ursprünglichen Dateinamen beizubehalten. Dann muß aber darauf geachtet werden, daß dieser den Konventionen des jeweiligen Rechnersystems entspricht. So verarbeiten die meisten Unix-Derivate, aber auch OS/2 unter dem ,,High Performance File System`` (HPFS) bis zu 254 Zeichen als Dateinamen. Unix-Dateinamen sind darüber hinaus kontextsensitiv; die Datei ,TEST` ist eine andere als ,test` oder ,Test`. Die Datei- und Verzeichnisstruktur von Großrechnern ist völlig anders aufgebaut. Im Zweifelsfall sollte also stets der Name, den die Datei auf dem entfernten Host erhalten soll, mit angegeben werden.

Im umgekehrten Fall, wenn ein Datei von einem entfernten Host auf den eigenen kopiert werden soll, lautet der Befehl get. Die Syntax ist analog zu put:

ftp> get [remote LW/Pfad/Datei] [lokales LW/Pfad/Datei]

Mit

ftp> get test.data c:$\backslash$daten$\backslash$test.dat

wird also die Datei ,test.data` vom aktuellen Verzeichnis des remote Host auf die lokale Festplatte ,C:` ins Unterverzeichnis ,DATEN` als ,TEST.DAT` transferiert. Es ist auch hier möglich, den lokalen Dateinamen wegzulassen und damit den originären Namen beizubehalten. Dieser wird bei einer Nichtübereinstimmung automatisch den -- wenn es sich beim lokalen Rechner um einen solchen handelt -- DOS-Konventionen angepaßt. Da sich die zu verwendenden Sonderzeichen zwischen Betriebssystemen unterscheiden, ist es auch hier im Zweifelsfall sicherer, einen lokalen Dateinamen mit anzugeben.

Falls es bei DOS-Rechnern passiert, daß ein falscher Name der fernen Datei angegeben wurde, so wird diese trotzdem mit der Größe von 0 byte angelegt. Wird diese dann nicht gelöscht und die Datei mit der richtigen Bezeichnung nochmal kopiert, so verändert sich der lokale Dateiname der ,,richtigen`` Datei in der Weise, als daß das letzte Zeichen des Namens durch eine Ziffer ersetzt wird. Unter Unix wird die 0 byte-Datei dagegen einfach überschrieben.

Die vorherige Spezifizierung der Verzeichnisse mit cd bzw. lcd ist natürlich auch hier möglich, so daß mit

ftp> lcd c:$\backslash$daten

und

ftp> get test.data test.dat

die Datei ,test.data` in das angegebene Unterverzeichnis als ,TEST.DAT` kopiert wird.

Mehrere Dateien lassen sich mit dem bekannten Wildcard ,,$\bigstar$`` zusammenfassen und mit den Befehlen mput bzw. mget zusammenfassend kopieren. Das Handling mit Wildcards ist zwischen Systemen unterschiedlicher Namenskonventionen allerdings unhandlich (wenn beispielsweise mehrere Dateien, die mehr als 11 Zeichen haben, von einem Unix-Host auf einen DOS-Rechner kopiert werden sollen). Daher empfielt es sich, solche Dateien einzeln zu kopieren. Bei Übereinstimmung der Namenskonventionen ist die Möglichkeit, mehrere Files auf einmal zu kopieren, allerdings sehr zeitsparend. Auch hier können mit cd bzw. lcd vorher die Verzeichnisse vereinbart und gegebenenfalls ihr Inhalt mit lls oder !ls bzw. ls überprüft werden. Als Eingabe ist somit erforderlich:

ftp> mput [lokales LW/Pfad/Datei]

bzw.

ftp> mget [remote LW/Pfad/Datei]

Wenn also die Dateien ,TEST1.DAT`, ,TEST2.DAT` und ,TEST3.DAT` von ,C:$\backslash$DATEN` auf den entfernten Host übertragen werden sollen, so wird -- unter der Voraussetzung, daß die Verzeichnisse richtig bestimmt wurden --

ftp> mput test$\bigstar$.dat

eingegeben. Vor jeder zu kopierenden Datei kann dann angegeben werden, ob sie tatsächlich kopiert werden soll. Weiterhin kann vereinbart werden, daß alle nachfolgenden ohne weitere Rückfrage bearbeitet oder der Prozeß beendet werden soll. Diese interaktive Nachfrage kann vorher mit dem Befehl

ftp> prompt

wechselseitig ein- und ausgeschaltet werden, woraufhin die Meldung interactive mode set to on bzw. off erscheint.[*]

Eine geöffnete Verbindung wird mit

ftp> close

geschlossen. Daraufhin kann entweder mit open ein neuer Host angesprochen werden oder das Programm durch

ftp> quit bzw. bye

quittiert werden. Soll die Sitzung gleich verlassen werden, so ist die Eingabe von close überflüssig. Wird hingegen versucht, bei einer aktiven Verbindung ohne ein vorheriges close eine neue zu eröffnen, verursacht dieses die Fehlermeldung Already connected to ..., use close first.

ftp verfügt über eine (knappe) Hilfefunktion. Mit der Eingabe von

ftp> help

oder gleich

ftp> help [Kommando]

können entweder die zur Verfügung stehenden Befehle abgefragt werden oder mit der zusätzlichen Angabe des Kommandos, wofür dieses dient.

Falls ein entfernter Host nicht reagiert oder die Datenübertragung unerträglich langsam wird, kann das Programm mit [Strg]+[C] bzw. (auf DOS-Rechnern) [Strg]+[Pause] abgebrochen werden. Dieses Vorgehen darf nicht zur Regel werden, da in der Regel kein regulärer Abbau der Verbindung erfolgt und der remote Host aufgrund dessen noch weiter versucht, Daten zu senden.


next up previous contents
Next: Interaktives Arbeiten mit Telnet Up: Die TCP/IP-Anwendungen Previous: Die TCP/IP-Anwendungen
Joern Rueffer
7/18/1997