Homepage automatisch abgleichen

(1414 Worte insgesamt im Text)
(14521 mal aufgerufen)  Druckerfreundliche Ansicht [1]

Um eine auf den lokalen Rechnern erstellte Schulhomepage automatisch mit der offiziellen Seite abzugleichen gibt es verschiedene Möglichkeiten:


Ein häufig angewendete Form ist die Daten über FTP komplett neu auf den entfernten Server aufzuspielen. Damit wird aber erst einmal viel Bandbreite verschwendet, da auch diejenigen Seiten übertragen werden, die nicht geändert wurden. Auch das Löschen von nicht mehr aktuellen Seiten findet so nicht statt. Das Verzeichnisse nicht neu erzeugt werden, könnte man evtl. noch über ein entsprechendes Skript umgehen - aber summa summarum ist diese Methode nich unbedingt bequem.

Wesentlich bequemer und Ressourcenschonender funktioniert der Abgleich ziwschen lokaler und offizieller Homepage mit dem Programm "RSync". Diese Methode kann die Daten (und auch die Anmeldeinformationen) sogar verschlüsselt übertragen und ist damit sogar sicherer als der Datentransfer über FTP. Allerdings ist RSync nicht überall verfügbar.

Abgleich über FTP und .netrc

Da FTP aber auf allen derzeit verfügbaren Linux-Servern zur Verfügung steht, möchte ich hier dennoch die normale Vorgehensweise erklären.

Grundinstallation/ Anleitung

Die eigentliche Arbeit erledigt die Datei .netrc (Punkt beachten!) im Verzeichnis des Benutzers, welcher die Homepage aktualisieren soll. Diese Datei existiert dort meist noch nicht. Legen Sie sie mit dem Befehl:
touch ~/.netrc
als dieser Nutzer an und bearbeiten Sie diese Datei dann mit einem Editor Ihrer Wahl.

Zur Erklärung:
Beim Starten des FTP-Programms (Achtung: das Programm jetzt nicht mit dem FTP-Server verwechseln!) sucht dieses im Heimatverzeichnis des startenden Nutzers nach der Datei .netrc, die wir gerade erstellt haben. Das später zur Sprache kommende Skript wird automatisch eine Verbindung mit FTP zum Server des Providers aufbauen und dann wird diese Datei abgearbeitet.

Zunächst steht in dieser Datei der angewählte, entfernte Rechner (es können auch mehrere Rechner angegeben werden - diese sind mit einer Leerzeile voneinander zu trennen) mit der dazugehörenden Nutzer-Passwort-Kombination. Hier folgt auch gleich ein Hinweis: das FTP-Programm prüft vor einer Verbindungsaufnahme die Dateirechte der Datei .netrc - sind diese unsicher, d.h. Andere könnten diese Datei und damit die in ihr enthaltenen Passwörter lesen, dann bricht das Programm den Verbindungsaufbau ab. Setzen Sie also immer mit dem Befehl:

chmod 0600 ~/.netrc
die Dateirechte auf einen sicheren Wert und vergessen Sie nicht, dies nach jeder Änderung zu prüfen.

Durch das Kommando "macdef" definieren wir jetzt ein "Makro" mit dem Namen "init" - dieses "init-Makro" wird bei jeder neuen Verbindungsaufnahme ausgeführt. Wenn wir dem Makro einen anderen Namen geben würden, so müsste dieses Makro explizit bei einer Verbindungsaufname aufgerufen werden. Das steht einer Automatisierung wie wir sie möchten natürlich im Wege.

Ein wichtiger Hinweis noch zum Schluß: die letzte Zeile in der Datei muss eine Leerzeile sein.
machine "www.ihredomaen.de" login "ihrbenutzername" password "ihr passwort" Hier werden Informationen zum angewählten Server und den dazu gehörenden Account-Daten hinterlegt.
Für Shuttle ist dies z.B.
machine "www.LANDKREIS.shuttle.de"
macdef init Mit dem Befehl "macdef" wird ein Makro definiert. Das "init" Makro wird bei der Verbindungsaufnahme automatisch ausgeführt.

Sie können beliebige Befehle durch ein Makro ersetzen - dazu müssen Sie nur ein neues Makro definieren (eine Zeile zum vorhergehenden Makro freilassen) und die Befehle dort hintereinander eintragen.
passiv on Dieser Befehl schaltet die passive Ãœbertragung ein - kann u.U. beim Einsatz einer Firewall notwendig werden.
binary Für die korrekte Übermittlung aller Daten (z.B. auch Bilder) schalten wir den binären Übertragungsmodus ein.
prompt Sicherheitsabfragen abschalten - sonst würde das Makro bei "Problemen" anhalten und auf eine Eingabe vom Benutzer warten. Da das bei einer automatisierten Übertragung hinderlich ist, schalten wir das ab.
put /home/homepage/public_html/haus.htm www/seiten/hausaufgaben/klasse1a.htm Hiermit wird die Seite "haus.htm" der Klasse 1a von unserem Server zum Server des Providers übertragen und bekommt dort den Namen "klasse1a.htm".

Wenn Sie auf Ihrer Homepage einen Link auf diese Datei setzen, können die Kinder so z.B. jeden Tag diese Seite bearbeiten und durch den automatischen "Upload" wird die Seite im Internet z.B. jeden Tag um 13.30 aktualisiert - rechtzeitig nach dem Mittagessen...
cd www/unsereDomain.de Mit diesem Kommando wechseln wir auf dem Server des Providers in das Verzeichnis, welches unsere gesammte Homepage enthält.
lcd /home/homepage/public_html Jetzt gehen wir auf unserem eigenen Server in das Verzeichnis, welche die aktuellste Version unserer Homepage enthält.
mput * Durch den Befehl "mput" können mehrere Dateien aus einem Verzeichnis in einem Rutsch übertragen werden.
cd www/unsereDomain.de/zeitungsag Hier wird in das Verzeichnis der Zeitungs-AG gewechselt.
lcd /home/zeitung/public_html Jetzt wird auch auf dem eigenen Server das Verzeichnis der Zeitungs-AG angewählt.
mput * ...und wieder wird durch den Befehl "mput" das gesammte Verzeichnis beim Provider mit den Inhalten des lokalen Verzeichnisses aktualisiert.
quit Damit beenden wir die Verbindung. Das sollte bei einer automatischen Verbindungsaufnahme nicht vergessen werden!
Die letzte Zeile der Datei muss eine Leerzeile sein!

Leider überträgt der Befehl "mput" keine Verzeichnisse oder gar deren Inhalte. Wer also z.B. alle Grafiken der Homepage im Ordner "grafik" sammelt, der muss nach dem "mput"-Befehl im Hauptverzeichnis mit den "cd"- und "lcd"-Befehlen in die entsprechenden Unterverzeichnisse wechseln, dort erneut mit "mput *" alle Dateien des Unterordners übertragen und anschließend durch "cd .." und "lcd .." wieder ins Hauptverzeichnis wechseln. Bei vielen Verzeichnissen kann es also in ziemliche Tipparbeit ausarten!

Glücklicherweise brauchen Sie sich diese Arbeit ja nicht allzu oft zu machen...

Kleiner Tip für die Erstellung der Datei:
Melden Sie sich am Server auf zwei verschiedenen Konsolen an - am besten, indem sie am Client zweimal Putty [4] starten. Das eine Putty-Fenster können Sie nun zur Bearbeitung der Datei ".netrc" verwenden und im anderen Fenster die Befehle Schritt für Schritt eingeben.

Hinweis: Wenn Sie später einmal wieder manuell auf dem FTP-Server arbeiten möchten, schalten Sie mit der Option "-n" die Benutzung der Datei .netrc ab und starten Sie die Verbindung mit:
ftp -n www.nom.shuttle.de

Sicherer und schnellerer: Abgleich über RSync

Mit dem Programm RSync kann man Verzeichnisse auf zwei Rechnern miteinander abgleichen und synchronisieren.
Dabei werden nur geänderte Dateien, bzw. sogar nur die geänderten Teile einer geänderten Datei übertragen: Wird in einer großen Datei im Mittelteil etwas verändert, wird nur diese Änderung durch das Netz transportiert.
Zusätzlich kann man die Übertragung noch verschlüsseln und damit die Sicherheit enorm steigern: ein Passwort wird weder gespeichert noch über das Netzwerk übertragen.

SSH-Schlüssel auf dem entfernten Server platzieren

Um später den Datenabgleich automatisch geschehen zu lassen und auch kein Passwort speichern zu müssen, benötigen wir auf dem entfernten System einen SSH-Server, der für eine Authentifizierung über RSA-Key vorkonfiguriert ist. Die von WinShuttle [5] betreuten Server sind glücklicherweise so konfiguriert.

Erzeugen Sie zunächst ein Schlüsselpaar, wie es hier beschrieben wird [6]. Vergeben Sie aber kein Passwort. Anschließend sollten Sie sich einmal am WiNShuttle [7] Server über SSH anmelden und dort ein neues Verzeichnis erzeugen. Hier einmal am Beispiel des "Northeimer"-Shuttle-Servers gezeigt:

Kopieren Sie zuerst den öffentlichen Schlüssel "id_rsa.pub" mit dem Befehl

susi:~ # scp ~/.ssh/id_rsa.pub benutzername@www.nom.shuttle.de:~
benutzername@www.nom.shuttle.de's password: *********
id_rsa.pub 100% 209 0.0KB/s 00:00

Auf den Webserver und melden Sie sich anschließend direkt bei diesem an, um ihn auch nutzbar zu machen:

susi:~ # ssh benutzername@www.nom.shuttle.de
benutzername@www.nom.shuttle.de's password: *********
Last login: Sun Mar 30 16:33:25 2004 from p50865214.dip0.
Sun Microsystems Inc. SunOS 8.6 Generic August 2006
frankfurt (benutzername) ~> mkdir .ssh
frankfurt (benutzername) ~> mv ~/id_rsa.pub ~/.ssh/
frankfurt (benutzername) ~> cat ~/.ssh/id_rsa.pub >> /.ssh/authorized_keys
frankfurt (benutzername) ~> chmod 600 ~/.ssh/*
frankfurt (benutzername) ~> exit

Zur Kontrolle sollte Sie sich nun noch einmal kurz wie oben am Shuttle-Server über SSH anmelden. Jetzt sollten Sie nicht mehr nach einem Passwort gefragt werden.

Einsatz von RSync

Der eigentliche Trick ist nun der folgende Befehl:
rsync -avz -e ssh --delete /Pfad_zur_lokalen_Webseite/public_html/ benutzername@www.nom.shuttle.de:www/Domainname.de
Dazu benötigen Sie unter Umständen noch das Programm "rsync", welches Sie für den GEE-Server z.B. hier [8] bekommen können.
Wenn Sie nach diesem Befehl einige Ausgaben wie z.B.:

building file list ... done
deleting old-index.html
6a.htm
index.html
wrote 4411 bytes read 20 bytes 805.64 bytes/sec
total size is 1360688 speedup is 307.08

Über den Bildschirm huschen sehen, klappt alles wie gewünscht.

Abgleich automatisieren

Die Tests liefen erfolgreich und Sie wollen die Arbeit automatisieren?

Wenn Sie den Abgleich bei jeder Einwahl des Servers automatisieren möchten, tragen Sie für RSync den Befehl:
rsync -az -e ssh --delete /Pfad_zur_lokalen_Webseite/public_html/ benutzername@www.nom.shuttle.de:www/Domainname.de
z.B. in der Datei ip-up.local (beim GEE-Server im Verzeichnis /etc/ppp) ein. Für FTP heißt der Befehl:
HOME=pfad_zur_.netrc-Datei
ftp www.nom.shuttle.de
Natürlich können Sie auch einen neuen Cronjob erstellen mit einem kleinen Skript, welches zuerst überprüft, ob der Server online ist und danach den entsprechenden Befehl aufruft.


  

[ zurück zu Linux allgemein [9] | Index [10] ]

Kommentare

Einen Kommentar hinzufügen


Links
  [1] http://www.linux-schulserver.de/index.php?name=Sections&req=viewarticle&artid=9&allpages=1&theme=Printer
  [2] http://www.linux-schulserver.de/Sections-article9-p2.phtml
  [3] http://www.linux-schulserver.de/Sections-article9-p3.phtml
  [4] http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
  [5] http://www.winshuttle.de/
  [6] http://www.linux-schulserver.de/Sections-article3-p6.phtml
  [7] http://www.shuttle.de/
  [8] http://www.linux-schulserver.de/download/rsync-2.5.7-1.i386.rpm
  [9] http://www.linux-schulserver.de/index.php?name=Sections&req=listarticles&secid=5
  [10] http://www.linux-schulserver.de/index.php?name=Sections