ncp_logo.png

Kopierzwerg

out of the box

01.08.2000 Es gibt tausende Tools und Utilities für Linux. "out of the box" pickt sich die Rosinen raus und stellt pro Monat ein Progrämmchen vor, das wir für schlichtweg unentbehrlich oder aber zu Unrecht wenig beachtet halten. Dieses Mal geht es um das Netzkopiertool ncp.

Um Dateien übers Netz von einem Rechner auf einen anderen zu schaufeln, bedient man sich normalerweise ftp oder scp. Was aber, wenn man "eben schnell mal" eine oder mehrere Dateien einem anderen Rechner zum Download anbieten oder jemandem die Ausgabe eines Kommandozeilenbefehls übermitteln will? Dann erweisen sich die oben genannten Dienste und deren Server-Konfiguration als zu umständlich. Felix von Leitner hat wahrscheinlich dieses Problem gehabt und ncp entwickelt.

Ungewöhnliche Verpackung

Von der ncp-Homepage (http://www.fefe.de/ncp/) holen wir uns den Quelltext des Programms, der als -komprimiertes -Archiv vorliegt. Da nicht alle tar-Versionen die automatische Benutzung von bzip2 anbieten, erledigen wir das Auspacken der Reihe nach:

bunzip2 -c ncp-1.0.tar.bz2 | tar xf -

Anschließend geht es ans Kompilieren. Dazu ist bei ncp lediglich der Aufruf von make nötig. Das eigentliche Installieren des ausführbaren Programms ins Verzeichnis /usr/local/bin und das Anlegen von zwei symbolischen Links müssen wir mit root-Rechten vornehmen, da root das Schreibrecht in Systemverzeichnissen wie diesem vorbehalten ist.

cd ncp
make
su    (root-Passwort eingeben)
cp ncp /usr/local/bin
cd /usr/local/bin
ln -s ncp npoll
ln -s ncp npush
exit

Verschiedene Betriebsarten

ncp kann in unterschiedlichen Modi betrieben werden. Wird es unter dem Namen ncp aufgerufen, verschickt oder empfängt es eine oder mehrere Dateien. Als Beispiel versenden wir das gesamte -Verzeichnis von RechnerA nach RechnerB. Dazu wird ncp zuerst auf RechnerB im Servermodus gestartet und danach auf RechnerA im Clientmodus:

[RechnerB]$ ncp
ncp: server mode.  waiting for connection.
[RechnerA]$ ncp RechnerA /etc
tar: Entferne führenden `/' von absoluten Dateinamen im Archiv.
drwxr-xr-x root/root         0 2000-05-30 09:26 etc/
-rw-r--r-- root/root      2096 1999-03-11 18:03 etc/hosts
...

Hier zahlt sich wieder einmal der modulare Aufbau von Unix aus. Anstatt sich selbst um das Aufsammeln aller Dateien im /etc-Verzeichnis zu kümmern, überlässt ncp diese Aufgabe tar. Dieses Tool wird auch auf der Empfängerseite aufgerufen, um dort die Dateien zu schreiben. Aus Sicherheitsgründen weigert sich tar, den absoluten Pfadnamen mit einzupacken, damit auf RechnerB nicht versehentlich das dortige /etc-Verzeichnis überschrieben wird.

Ruft man ncp unter den Namen npush oder npoll auf (deshalb die symbolischen Links, die wir bei der Installation angelegt haben), verschickt oder empfängt es die Standardeingabe.

Womit wir die Standardeingabe von npush füttern, bleibt uns selbst überlassen. Als Beispiel übertragen wir den Inhalt des Verzeichnisses texte als bzip2-komprimiertes Archiv, das auf der Gegenseite nicht ausgepackt, sondern nur gespeichert werden soll:

[RechnerA]$ tar cf - texte | bzip2 | npush
npush: IPv4 multicast failed, trying IPv4 broadcast
[RechnerB]$ npoll RechnerA > texte.tar.bz2
connecting to ::ffff:192.168.0.1

Nehmen wir die Kommandokette auf RechnerA mal auseinander. Zuerst erzeugt tar mit c ("create") ein Archiv, das durch f - auf der Standardausgabe landet. Mit dem Pipezeichen | wird diese an bzip2 umgeleitet, das wiederum seine Ausgabe an npush weiter gibt. Auf der Gegenseite (RechnerB) empfängt npoll die Daten und gibt sie auf der Standardausgabe aus, die mit > texte.tar.bz2 in eine Datei namens texte.tar.bz2 umgelenkt wird.

ncp auf Diskette

Für Benutzer mit etwas Erfahrung im Umgang mit der Kommandozeile kommt hier noch ein Leckerbissen. Eine sehr nützliche Anwendung von ncp ist die Datenübertragung zwischen zwei Rechnern unter minimalen Voraussetzungen. Ich habe dazu die Mini-Linuxdistribution hal91 so angepasst, dass sie die Verbindung zweier Rechner über ein Nullmodemkabel erlaubt. Dazu muss lediglich hal91 auf beiden Rechnern von Diskette gebootet und die Verbindung mittels des Skripts ppp-nullmodem (das Sie ggf. anpassen müssen) aufgebaut werden:

#!/bin/sh
# Kompression für PPP (nicht zwingend notwendig)
insmod /tmp/bsd_comp.o
# PPP-Verbindung aufbauen
# Serielle Schnittstelle: /dev/ttyS0 oder /dev/ttyS1
# Als IP-Adressenpärchen angeben:
# Hier im Beispiel auf RechnerA: 192.168.0.1:192.168.0.2
# Auf RechnerB: 192.168.0.2:192.168.0.1
pppd /dev/ttyS1 115200 asyncmap 0 noauth persist local passive \
  nodefaultroute 192.168.0.1:192.168.0.2

Von einem Notebook, das nur acht MByte Arbeitsspeicher und keine Netzwerkkarte besitzt, können so Daten gesichert werden – sogar, wenn gar kein Linux darauf installiert ist.

Glossar

ftp

Das "file transfer protocol", ein weit verbreitetes Dateiübertragungsprotokoll. Da alle Daten einschließlich der Passwörter unverschlüsselt übertragen werden und daher "abhörbar" sind, setzt man es heute weniger für den Datentransport zwischen zwei echten Benutzeraccounts ein, sondern "nur" für Dateidownloads aus den (Software-)Archiven anonymer FTP-Server.

scp

"secure copy", ein Teil des Secure-Shell-Pakets ssh, mit dem Dateien verschlüsselt übertragen werden.

Server

Ein Programm, das einen bestimmten Dienst anbietet, den Client-Programme nutzen können, wenn sie sich mit dem Server verbinden. Beispiele für solche angebotenen Dienste sind WWW, ftp und finger.

bzip2

Die Alternative zum gzip, dem Standard-Komprimierungsprogramm auf Linuxsystemen. Oft komprimiert bzip2 besser als gzip.

tar

Der "tape archiver", das Standard-Archivierungsprogramm unter Unix. Mit ihm werden ganze Verzeichnisstrukturen zu einer einzelnen Datei verschmolzen, die z.B. auf Magnetband (daher der Name) geschrieben oder komprimiert werden kann.

Kompilieren

Ein "echtes" Programm ist in Quelltextform noch nicht vom Betriebssystem ausführbar. Erst durch das Kompilieren ("Übersetzen") mit einem Compiler wird daraus eine durch den jeweiligen Prozessor ausführbare Darstellung. Ein großer Vorteil der Quelltextform ist, dass sie sich auf verschiedenen Plattformen (Intel, Sparc, Alpha …) übersetzen lässt, wenn die Software ausreichend portabel programmiert wurde.

make

Programm zur Ablaufsteuerung beim Übersetzen von Quelltexten. Die Konfigurationsdatei von make (das Makefile) enthält dabei beispielsweise Informationen über Abhängigkeiten zwischen den einzelnen Programmmodulen.

symbolischen Links

Auf Unix-Dateisystemen hat man die Möglichkeit, einer Datei mehrere Namen zu geben. Mit dem Kommando ln -s bla blubb wird die Datei bla auch unter dem Namen blubb erreichbar.

/etc

In diesem Verzeichnis sind die Konfigurationsdateien verschiedenster Programme auf Ihrem Linuxrechner unter gebracht. Um nach einem Plattencrash, einer unvorsichtigen Löschaktion als root oder bei einer Neuinstallation all die in diesen Dateien steckende Anpassungsarbeit nicht neu aufwenden zu müssen, lohnt es sich, /etc zu sichern.

absoluten Pfadnamen

Die komplette, vom Wurzelverzeichnis ausgehende (und systemweit eindeutige) Angabe, wo sich eine Datei befindet. Der absolute Pfad einer Datei logs/log.txt in meinem Homeverzeichnis lautet beispielsweise /home/chris/logs/log.txt.

Standardeingabe

Bei vielen Kommandozeilenprogrammen gibt es die Möglichkeit, den Namen der Eingabedatei wegzulassen. In diesem Fall liest das Programm von der Standardeingabe, die normalerweise mit der Tastatur verbunden ist. Wird der Name der Ausgabedatei weggelassen, geben viele Programme auf der Standardausgabe aus, also sichtbar aufs Terminal.

Standardausgabe

Bei vielen Kommandozeilenprogrammen gibt es die Möglichkeit, den Namen der Eingabedatei wegzulassen. In diesem Fall liest das Programm von der Standardeingabe, die normalerweise mit der Tastatur verbunden ist. Wird der Name der Ausgabedatei weggelassen, geben viele Programme auf der Standardausgabe aus, also sichtbar aufs Terminal.

|

Das Pipezeichen (steht für eine stilisierte Rohrleitung) verbindet die Standardausgabe eines Programms mit der Standardeingabe eines anderen. So lassen sich mehrere Programme zu einem Verarbeitungsschritt zusammen fassen.

hal91

Ein Mini-Linux, das von einer einzigen Diskette gebootet wird und ausschließlich im Arbeitsspeicher des Rechners abläuft. Die für Nullmodem angepasste Version ist unter http://home.tu-clausthal.de/~incp/hal91.html zu bekommen.

Nullmodemkabel

Ein Kabel zum direkten Verbinden von zwei Rechnern über die serielle Schnittstelle. Im Gegensatz zu normalen seriellen Kabeln sind hier die Sende- und Empfangsleitungen über Kreuz geschaltet.

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare