Spiegelfechter
Webseiten richtig organisieren
-------------------------------------------------------------------------------
c't 18/99, S. 132 (ju)



Das Perlscript mirror.pl ermglicht es Dateien von
seinem lokalen Rechner auf den Server seiner Homepage
zu bertragen, indem eine lokale Verzeichnisstruktur
auf den Server gespiegelt wird. Dabei lassen sich
Strings durch Suchen und Ersetzen verndern.  Das
Script versteht sich als eine Anregung, wie diese
Aufgabe zu lsen ist, und keinesfalls als eine fertige
und komplette Lsung.


Installation:
-------------

- Es muss eine Version von Perl installiert
  sein. Perldistributionen fr Windows und Macintosh
  befindet sich zum Beispiel auf der Shareware-CD aus
  Heft 14/99

- Die Dateien aus dem Archiv sind in ein Verzeichnis
  auf der Festplatte zu kopieren.

- Die Dateien ftp.pl und lchat.pl sind fr die
  ftp-Zugriffe auf den Server zustndig. Da wir sie nur
  in unvernderter Form verbreiten drfen, mssen von
  Hand noch nderungen in der Datei ftp.pl durchgefhrt
  werden. Die Funktion deldir muss durch die Funktion
  deldir aus der Datei deldir.pl ersetzt werden.

- Anschlieend mssen beide Dateien in das Verzeichnis
  lib der Perlinstallation verschoben werden. In diesem
  Verzeichnis befindet sich bereits eine Datei ftp.pl,
  die durch die Neue ersetzt werden muss.

- Die Konfigurationsdatei mirror.cfg muss den
  vorhandenen Gegebenheiten angepasst werden. Das
  Passwort wird dabei unverschlsselt eingetragen! Sie
  sollten daher mirror.pl nicht zum bertragen auf
  einen Server mit sicherheitsrelevanten Daten
  verwenden. Weiterhin ist zu beachten:

  - keine Slashes oder Backslashes am Ende einer Zeile!

  - RemoteDir mit Slash "/" beginnen

  - Einzelne Dateierweiterungen sind mit Komma zu trennen

  - Kommentare mssen mit # in der ERSTEN Spalte beginnen!

  - Wenn man neue Dateien von der bertragung ausnimmt
    (exclude), werden keine Dateien auf dem Server
    gelscht. Jedoch werden die Dateien neu bertragen,
    wenn man die Exclusion wieder zurcknimmt.

  - Gro- und Kleinschreibung ist bei
    Dateierweiterungen egal.

  - Wenn man den Eintrag fr das cgi-bin-Verzeichnis
    ndert, werden nicht automatisch die Zugriffsrechte
    von bereits vorhandenen Dateien gesetzt bzw.
    gelscht.

- In der Datei sr.cfg kann man Strings zum Ersetzen in
  bestimmten Dateien eintragen. Ein Ersetzungsstring
  belegt dabei in der Datei sr.cfg eine Zeile.  Der
  Syntax lautet: [original String]|[Ersetzungsstring]

- In der Datei mirror.cfg muss man in der Zeile
  "ReplaceIn=" nur noch mit Komma getrennt die
  Dateiendungen angeben, in denen die Ersetzungen
  vorgenommen werden.  Sinnvoll ist hier blicherweise:
  ReplaceIn=html,htm

- nderungen in der Datei sr.cfg wirken sich nur auf
  neu zu bertragende Dateien aus.


Programmaufruf:
---------------

Das Programm wird von der Kommandozeile aus dem
Installationsverzeichnis gestartet.  Unter Windows
lautet der Aufruf "perl mirror.pl", wenn Perl im
Suchpfad steht. Unter Linux muss in die erste Zeile von
mirror.pl (#!/usr/bin/perl) der Pfad von Perl
eingetragen werden und das Execute-Flag mit 

# chmod u+x mirror.pl

gesetzt werden. Dann lsst sich ./mirror.pl direkt
starten.


bekannte Probleme:
------------------

Verzeichnisse und Dateinamen mit Leerzeichen lassen
sich nicht verarbeiten.

Sollte das Script unterbrochen werden, nachdem bereits
Dateien auf dem Server gelscht worden sind, so gibt es
ein Problem:

- Die Zustandsdatei der Originaldateien "mirror.dat"
  wurde nicht aktualisiert.

- Das Script versucht beim nchsten mal wieder die
  Dateien zu lschen, was nicht funktionieren wird. Man
  muss das Script also wieder abbrechen!

- gleiches gilt fr Verzeichnisse, die auf dem Server
  erstellt werden.

Es gibt zwei Mglichkeiten die Datenkonsistenz
wiederherzustellen:

- Den Inhalt von mirror.dat lschen und alle Dateien
  vom Server lschen.  Anschlieend mirror.pl erneut
  starten.

- Die lokale Datenstruktur ist in der Datei mirror.dat
  gespeichert. Diese Datei muss man von Hand editieren:
  Es sind alle Zeilen von Programmen und Verzeichnissen
  zu lschen, die nicht auf dem Server vorhanden
  sind. Programme, die bereits auf dem Server
  angekommen sind, jedoch nicht in der mirror.dat
  auftauchen, mssen vom Server gelscht werden.

- In beiden Fllen bentigt man ein ftp-Programm.


Dateien:
--------

deldir.pl      Funktion zum lschen von Verzeichnissen auf dem Server
ftp.pl         Perlbibliothek mit ftp-Befehlen
lchat.pl       Perlbibliothek, die von ftp.pl aufgerufen wird
mirror.pl      Hauptdatei
mirror.dat     Abbild der lokalen Verzeichnisstruktur
mirror.cfg     Konfigurationsdatei von mirror.pl
readme.txt     diese Datei
sr.cfg         Konfigurationsdatei fr Suchen und Ersetzen
sys\socket.ph  Perlbibliothek, die von ftp.pl aufgerufen wird


Bei Fragen oder Problemen mit dem Script wenden Sie sich bitte 
an Erich Kramer <km@ct.heise.de>.
