FTP - unbeaufsichtigtes Download
Computer - Linux
Geschrieben von Bernhard Husch   
Mittwoch, 12. August 2009

FTP - unbeaufsichtigtes Download

Bisweilen hat man den Wunsch, große Datenmengen von einem Server herunterzuladen, ohne den Download die ganze Zeit zu beobachten. Noch interessanter wird es, wenn man die Möglichkeit eines Shellzugangs zu einem Server (z. B. unter Linux) hat.


Folgendes Szenario: Ein Benutzer hat Zugang zu einem dauerhaft im Internet befindlichen Server (hat z. B. einen V-Server bei einem Hoster gemietet).Er möchte sich ein ISO-Image für eine DVD vom NAS-Device eines Bekannten herunterladen, der - wie er selbst - nur über einen DSL-Anschluss verfügt; die Downloadgeschwindigkeit würde in diesem Fall nur sehr gering sein - bei einem DVD-Image könnte das ca. 20 Std. dauern. Der Benutzer möchte aber seinen eigenen Rechner nicht so lange am Netz belassen. Hier muss ein Ausweg gefunden werden.

Eine Möglichkeit, FTP-Operationen auszuführen, ohne mit dem Server verbunden zu sein, bieten die so genannten here documents. Mit ihrer Hilfe kann man u. a. FTP-Downloads automatisieren. Dabei tritt ein weiteres Problem auf: Wenn man in einer (Linux-) Shell ein Programm aufruft und während der Programmausführung die Shell abbricht, wird auch das aufgerufene Programm beendet. Die weitere Ausführung des Programms nach dem Abbrechen der Shell (bzw. dem Abmelden des Benutzers) kann man durch das Programm nohup (no hangup) unter allen Unix/Linux-Systemen verhindern.

Wie geht man vor?

  1. Schreiben eines Shell-Scripts als here document

    Beispiel: die Datei bild.jpg soll vom Server s1.irgendwo.net heruntergeladen werden. Wir erstellen folgendes Shell-Script:

    #/bin/sh
    # Programmaufruf
    # Programmname: ftp
    # Argumnente: -inv
    # -i Turns off interactive prompting during multiple file transfers.
    # -n Restrains ftp from attempting ``auto-login'' upon initial
    #     connection.  If auto-login is enabled, ftp will
    #     check the .netrc (see netrc(5)) file in the user's home directory for
    #     an entry describing an account on the remote machine.  If no entry
    #     exists, ftp will prompt for the remote machine login name (default
    #     is the user
    #     identity on the local machine), and, if necessary, prompt for a
    #     password and an account with which to login.
    # -v Verbose option forces ftp to show all responses from the remote
    #     server, as well as report on data transfer statistics.
    # Name des Servers, mit dem Verbindung aufgenommen werden soll
    # Ende-Marke für das here document
  2. ftp -inv s1.irgendwo.net << ENDE

    # Benutzeridentifikation
    user benutzername password
  3. # Download-Kommando für FTP
    get bild.jpg

    # Beenden der FTP-Übertragung
    bye

    # ENDE-Marke
    ENDE
  4. Das Script wird unter dem Namen z. B. ftp-here.sh gespeichert.

    Nun muss es mit
    chmod 700 ftp-here
  5. ausführbar gemacht werden und kann dann aufgerufen werden.

Damit das Script auch nach dem Abmelden aus der Shell weiterarbeitet, gibt man auf der Shell folgendes Kommando ein:

nohup ftp-here &

Der Prozess wird in den Hintergrund verschoben, nun kann man getrost die Shell schließen, denn der Prozess arbeitet weiter.

Letzte Aktualisierung ( Dienstag, 1. September 2009 )
 
< zurück   weiter >