Linux ISDN
FTP on demand


Das kennt man: wenn man von einem etwas weiter entfernten Server (womöglich aus Übersee) eine große Binärdatei holen will, wird die maximale Übertragungsrate nicht mehr richtig ausgenutzt - besonders bei ISDN passiert das schnell. Nun hat man sich keinen ISDN-Anschluß legen lassen, um dem Fernmeldeanbieter das Geld in den Rachen zu werfen, und außerdem benutzen wir das beste Betriebssystem der Welt :-) Und zumindestens Leute, die einen Uni-Zugang haben, und dort ein paar Unix-Befehle loswerden können, können hier tricksen.

Die Theorie

Aber wie? Der Trick besteht darin, daß die Datei nicht sofort und direkt downgeloadet wird, sondern daß man das zunächst den Server an der Uni machen läßt. Nach einiger Zeit holt man sich die gewünschte Datei dann von dort - die Verbindung zum Uniserver ist ja in der Regel so gut, daß die maximale Übertragungsrate voll ausgenutzt wird. UNIX kennt den Befehl nohup, mit dem man Befehle ausführen kann, ohne eingeloggt zu sein - das ist die Voraussetzung. Man kann sich also beim Provider einloggen und folgende Befehlssequenz eingeben:
  provider:# nohup ftp -i ftp.leo.org &
  provider:# exit
  connection closed by foreign host.
  root:# _
Das ganze dauert nicht mehr als ein paar Sekunden, eine Telefoneinheit wurde der guten Sache geopfert.

Allerdings muß man etwas Vorarbeit leisten, denn ftp ist ein interaktives Programm, welches zur Arbeit eine ganze Menge Informationen benötigt (zum Bleistift, was es denn holen soll). Die Interaktivität kann man ihm abgewöhnen, dafür ist die Option "-i" da. Die Informationen muß man trotzdem übergeben, und das kann man, indem man eine Datei .netrc beim Provider hinterlegt, in dem alles das drinsteht, was ftp tun soll. (Gibt man als Option "-n" an, wird diese Datei nicht beachtet!)

So könnte die Datei .netrc aussehen, wenn man sich beispielsweise den Kernel 2.0.7 (immerhin mehr als 5 Megabyte!) vom Server bei LEO.ORG holen will:

provider:~/.netrc
  machine ftp.leo.org
  login anonymous
  password <eigene@email.adresse>
  macdef init
    lcd /usr/src
    cd /pub/comp/os/linux/Linus/v2.0
    bin
    get linux-2.0.7.tar.gz
    close
    quit
So kann man sich für jeden Server einen Eintrag machen. Diese Datei muß vor dem nohup ftp im Heimatverzeichnis beim Provider abgelegt werden. Eine Stunde später kann man sich den Kernel mit Höchstgeschwindigkeit beim Provider abholen. Schön, gell?

Automatisierung

So. Nun wollen wir das automatisieren. Hierzu muß natürlich wieder der cron herhalten, der die datenintensive Übertragung in die billigen Nachtstunden verlegt.

... Aber daran arbeite ich noch - laßt Euch überraschen!


Copyright © (GPL V 2) 1996 Bernhard Hailer
Last modification: 26-Aug-96 BeH