Transport und Management von Daten

Wenn man Daten per FTP übertragen möchte, muss man sich zunächst mit einem FTP-Server verbinden. Daher beginnt jede Sitzung mit dem Kommando OPEN. Nachdem die Verbindung erfolgreich aufgebaut werden konnte, folgt unmittelbar die Login-Sequenz, wo die Benutzerdaten des gewünschten FTP-Kontos eingegeben werden müssen.

FTP erfordert immer eine Anmeldung am Server per Benutzerkonto, wobei der Server die vom Administrator festgelegten erforderlichen Daten anfordert. Das wird im Protokoll geregelt und FTP.COM führt den Benutzer automatisch durch diesen Vorgang. Es können bis zu 3 Eingaben notwendig werden (Benutzername, Passwort, Konto), wobei in der Praxis entweder nur die erste oder die ersten beiden Eingaben erforderlich sind. Viele frei verfügbare FTP-Server mit anonymen Zugängen nutzen meist die erste Möglichkeit (siehe Wikipedia unter "Öffentliche FTP-Server"). Wichtig ist auch, dass man bereits an dieser Stelle auf Gross- und Kleinschreibung achtet, man bekommt sonst bei Fehlern nie einen Zugang zu Servern, welche unter UNIX verwandten Betriebssystemen laufen und das sind fast alle im Internet :-).

Nachdem man diese Hürde genommen hat, besteht Zugriff auf das Dateisystem des Servers. Ab diesem Zeitpunkt arbeitet man ähnlich wie unter CP/M mit einem lokalen Laufwerk, wobei die entsprechenden Kommandos von FTP.COM, statt der CP/M-Befehle, verwendet werden müssen. Die vollständige Befehlsliste mit Erläuterungen zu jedem Kommando steht im Abschnitt Befehlsübersicht der Programmbeschreibung zur Verfügung, an dieser Stelle nur einige Beispiele:

  • mit den Kommandos DIR, NLIST und MDIR hat man mehrere Möglichkeiten, um sich den Inhalt von Server-Verzeichnissen anzeigen zu lassen, wobei sich die Menge an Information und die Darstellungsform unterscheidet, auch Dateimasken mit Platzhalterzeichen sind erlaubt
  • der Inhalt des lokalen Verzeichnisses kann mit LDIR ausgegeben werden, auch mit Dateimaske und Platzhalterzeichen
  • das Herunterladen von Daten vom FTP-Server auf das aktuelle DU: von CP/M erfolgt mit den beiden Kommandos GET oder MGET
  • das Hinaufladen von Daten vom aktuellen DU: von CP/M auf den FTP-Server erfolgt mit den beiden Kommandos PUT oder MPUT
  • das aktuelle Arbeitsverzeichnis auf dem FTP-Server kann mit Hilfe der Kommandos CD und PD eingestellt und mit PWD angezeigt werden
  • das lokale Arbeitsverzeichnis DU: wird mit dem Kommando LCD eingestellt
  • Dateien kann man lokal mit LERA und entfernt mit DELETE löschen
  • entfernte Dateien können mit RENAME auf dem FTP-Server umbenannt werden
  • Verzeichnisse auf dem FTP-Server kann man mit MKDIR erstellen und RMDIR löschen

Alle Aktionen, welche schreibend auf das Dateisystem des Servers zugreifen wollen, erfordern natürlich auch die entsprechenden Rechte, welche wiederum vom Administrator dem FTP-Benutzerkonto zugewiesen werden müssen. Handelt es sich beispielsweise um einen reinen Download-Server kann man zwar solche Befehle abschicken, wird aber immer eine Fehlermeldung als Antwort erhalten.

Das Ende einer FTP-Sitzung wird mit dem Kommando CLOSE beim Server angefordert, welcher daraufhin die Verbindung schliesst. Man bleibt aber in der FTP-Kommandozeile. Das QUIT Kommando schliesst bei einer aktiven Sitzung CLOSE mit ein, beide Aktionen werden nacheinander ausgeführt und man befindet sich anschliessend wieder im CP/M-Betriebssystem.

Ein wichtiges Problem, vor dem jedes Kommunikationsprogramm steht, ist der Umgang mit verbotenen Zeichen in der Bezeichnung von Dateien. An dieser Stelle spielen nicht nur die Bedürfnisse von CP/M eine Rolle, sondern auch die Beschränkungen des fremden Dateisystems auf dem FTP-Server. Das durchaus häufiger verwendete Zeichen "/" ist beispielsweise für CP/M kein Problem, die UNIX verwandten Systeme benutzen es allerdings als Trennzeichen für die Ordnernamen von Pfadangaben, deshalb ist es in Dateinamen nicht erlaubt. Da ich von automatischen Umbenennaktionen per Software während einer Datenübertragung überhaupt nichts halte, gilt die nachfolgende einfache Regel. Dateien, welche eines der folgenden Zeichen in ihrer Bezeichnung benutzen, werden zurückgewiesen und können mit FTP.COM nicht übertragen werden.

verbotene Zeichen in Dateinamen: .,:;=%|/\‹›()[]{}

Man sollte das nicht vernachlässigen, besonders wenn man mit MPUT/MGET Dateigruppen übertragen will, gibt das dann jedesmal Fehlermeldungen. Die beste Vorgehensweise besteht darin, sein CP/M Dateisystem sauber zu halten und diese Zeichen nie zu benutzen. Ich empfehle daher auch eine einmalige "Reinigungsaktion" bei den vorhandenen Datenträgern! Wenn man das Programm für Sicherungszwecke verwenden möchte, bleibt auch keine andere Wahl, da sonst nicht vollständig gesichert werden kann.

Da ich FTP.COM für Backup-Zwecke einsetzen möchte und Störungen bei der Übertragung von Daten nie ausgeschlossen werden können, erfolgt der Transfer von Dateien in zwei Schritten. Zunächst wird auf der empfangenden Seite eine temporäre Datei mit dem reservierten Namen FTP$FILE.$$$ angelegt, in welche die Daten geschrieben werden. Meldet der Empfänger nach dem Abschluss der Übertragung eine positive Bestätigung, erhält die temporäre Datei ihren endgültigen Namen und erst dann werden auch gleichnamige Dateien des Zielsystems überschrieben. Das funktioniert in beide Richtungen, sowohl beim Download vom, als auch beim Upload auf den FTP-Server. Der reservierte Name darf demzufolge nicht im Dateisystem benutzt werden, da diese Datei von FTP.COM sonst überschrieben wird! Wenn ein Transfer fehlschlagen sollte, bleibt die Integrität von Dateien, welche bereits vorhanden sind, trotzdem erhalten, da dann auch keine positive Bestätigung des Transfers erfolgt. Es kann maximal passieren, dass die (unvollständige) Datei FTP$FILE.$$$ nicht mehr entfernt wird. Die kann man immer ohne Bedenken löschen, muss man aber nicht, da sie nach dem nächsten erfolgreichen Transfer automatisch verschwunden ist.

Auf diese Art und Weise erfolgt der Transfer von Daten mit FTP.COM sehr sicher. Wichtig für das Hinaufladen von Dateien auf den FTP-Server ist dadurch allerdings, dass man nicht nur über Schreibrechte verfügen, sondern auch die Berechtigung für das Umbennen von Dateien haben muss, sonst kann FTP.COM nie eine Datenübertragung abschliessen und ein Upload wird immer fehlschlagen!

Genau wie MSDOS hat auch ein CP/M-Programm das 8.3-Problem bei der Kompatibillität von langen Dateinamen anderer Betriebssyteme mit dem eigenen Dateisystem. Mit UNIX Dateisystemen gibt es zusätzlich noch mögliche Konflikte bei gleichnamigen Dateien mit unterschiedlicher Gross- und Kleinschreibung der Namen. Derartige Dateien überschreiben sich unter CP/M gegenseitig, da nur Grossbuchstaben zugelassen sind. Diese Probleme beheben die beiden Befehle MDIR und MGET mit Hilfe eines eingebauten automatischen Filters im Hintergrund, indem ungeeignete Dateinamen ausgefiltert werden und beim zweiten Problem nur der erste Treffer einer Verzeichnisliste vom Server berücksichtigt wird. Vollständige Listen liefern daher nur die beiden Kommandos DIR und NLIST - daran muss man sich anfangs erst gewöhnen! Mit dem Einzelkommando GET kann man natürlich auch nicht kompatible Dateien vom Server herunterladen, dieses Kommando fragt dann automatisch nach einem neuen CP/M konformen Dateinamen vor der Übertragung und erzwingt so das Umbenennen.

Das Überschreiben von bereits vorhandenen Dateien auf der Empfängerseite wird in FTP.COM mit Hilfe von 3 Schaltern eingestellt. Wenn RUNIQUE (remote unique) bzw. LUNIQUE (local unique) aktiviert sind, werden solche Dateien immer übersprungen. Deaktiviert man diese Schalter greift die Einstellung von PROMPT. Ist PROMPT eingeschaltet, wird bei jeder bereits vorhandenen Datei interaktiv nachgefragt, ob sie überschrieben werden soll. Schaltet man auch PROMPT aus, werden alle Dateien ohne Nachfrage überschrieben. Das Programm ignoriert alle CP/M-Attribute von Dateien, sowohl RO als auch SYS wirken daher nicht wie üblich als Schreibschutz oder Listschutz.

Ein weiteres Relikt des beschränkten CP/M-Dateisystems ist die nicht vorhandene Grössenangabe von Dateien. Solange der FTP-Server nur als Zwischenspeicher von CP/M Daten dient, spielt das keine Rolle, daher sollte man die EOF-Einstellung nicht ändern und Daten immer im binären Modus übertragen. Wenn man allerdings beispielsweise Textdateien auf dem PC sofort weiterverwenden will, stören mitunter die überflüssigen Bytes des letzten CP/M-Sektors ab EOF-Kennzeichnung. Für Text-Dateien ist es daher ganz nützlich, wenn man vor der Übertragung den EOF-Schalter aktiviert. FTP.COM sendet dann eine Datei bis zum Erkennen des ersten EOF-Bytes und beendet an dieser Stelle die Datenübertragung. Man hat dann eine Kopie einer Text-Datei auf dem FTP-Server, welche nachbearbeitungsfrei weiterverwendet werden kann. Ganz wichtig ist allerdings auch, dass man danach den EOF-Schalter sofort wieder deaktiviert! Überträgt man so binäre Dateien, wie Programme, wird die Sendung natürlich auch mit dem ersten EOF-Byte in der Datei beendet, welches dort nicht das Dateiende kennzeichnet, sondern sich auch mitten in der Datei befinden kann!

Für die bereits angesprochenen meist langwierigen Backups grosser Datenmengen, wie zum Beispiel ganzer Festplattenlaufwerke, bietet das Programm die Möglichkeit, ein Übertragungsprotokoll zu aktivieren. Lässt man das Backup skriptgesteuert ablaufen, kann man diese Protokolldatei nach Abschluss des Gesamtvorganges automatisch schliessen lassen und auch noch mit in das Backup auf den Server speichern, so dass man jederzeit auch später noch Zugriff darauf hat. Am KC bietet sich dafür die RAM-Floppy förmlich an, da dann das Protokollieren den Backupvorgang nicht ausbremst. Das Protokoll wäre nach dem Ausschalten des KC aber auch weg, wenn man es nicht voher manuell auf Diskette oder Festplatte sichert. Das kann man übrigens auch mit Skriptbefehlen und den Umweg RAM-Floppy -> FTP-Server -> lokales DU:  erledigen. Speziell für das Protokoll sollte man vor jeder Übertragung im Skript die beiden Befehle CD und LCD ohne Parameter aufrufen, dann wird das Quell- und Zielverzeichnis einer darauf folgenden Übertragung im Protokoll mitgeschrieben :-). Da auch die Ausgaben aller Directory-Befehle von FTP.COM protokolliert werden, kann man sogar vor dem Backup die lokale Liste von Dateien in das Protokoll aufnehmen, welche anschliessend übertragen werden. Für lokale Verzeichnisse ist die Einstellung von FSYS beim Backup zu beachten, nur wenn FSYS aktiviert ist, werden auch alle Systemdateien gesichert!