TYPO3: Eine intelligentere Sicherung

Auf einer der von mir betreuten Webseiten unter TYPO3 befinden sich seit kurzer Zeit etwa 15.000 (fünfzehntausend) Dokumente in Bildform. TYPO3, als Hochlastsystem konzipiert, hat nunmehr die Eigenschaft, jedes bisschen seiner geleisteten Arbeit zur Wiederverwendung in einem Cache-Speicher abzulegen – eine sehr lobenswerte, aber keinesfalls platzsparende Eigenschaft.

Die einfachste Lösung ist hier ein “tar -czf backup.heute.tgz *”, in diesem Fall werden die gesamten Temporärdateien aber täglich mitgesichert.

Ebenso finden sich temporäre Daten in der Datenbank. Insbesonders mehrsprachige Webseiten mit Nutzern verschiedener Benutzergruppen verbrauchen mehrere hundert Megabyte auf der Festplatte. Es wird jede Seite, für jede Sprache und jedes Benutzerlogin einzeln abgespeichert. Dies ist notwendig, damit ein Benutzer nicht Daten zu sehen bekommt, für die seine Benutzergruppe nicht qualifiziert ist.

Ein Tip: Gehen Sie einfach mal in das Verzeichnis Ihrer TYPO3-Installation und tippen Sie unverbindlich: “du -hsm *” ein. Suchen Sie die Zeile, welche “typo3temp” enthält. Die Zahl zu Beginn der Zeile ist die Anzahl der Megabyte, die dieses Verzeichnis belegt. Bei mir steht dort ein Tag nach Löschen des Cache-Speichers bereits 2.239. Zweitausendzweihundertundneununddreissig Megabyte. Und diese Daten können mit einem Klick auf “Clear all cache” jederzeit zurückgewonnen werden.

Eigentlich ist der Speicherplatzverbrauch kein Problem, da TYPO3 ohnehin für den Betrieb auf einem echten Server ausgelegt ist. Aber bei Backups sehe ich es aus ergonomischen und Performanzgründen einfach nicht ein, riesige Mengen an unnötigen Dateien täglich zu sichern.

Ähnlich sieht es in der Datenbank aus. Alle Tabellen mit “cache_” im Namen sind eigentlich entbehrlich – die Klick auf “clear all cache” würde sie eh löschen und sie, im theoretischen Fall einer kompletten Neuinstallation, neu erstellen. Meine cache_pages enthält hier zum Beispiel 1,1 Gigabyte an Daten.

Eigentlich kann auch der sog. “Refindex” jederzeit neu erstellt werden, allerdings ist dieser Vorgang etwas aufwendiger. Und der Volltextindex (Tabellen mit “index_” zu Beginn) ist eigentlich auch überflüssig und würde weitere 600 MB pro Backup sparen.

So habe ich nun anstatt des zu Anfangs erwähnten “tar -czf backup.heute.tgz *” folgendes in Verwendung:

# Prüfen ob das TYPO3 ist
if [ -L "typo3_src" ]; then
  find -type d > ~/DATEILISTE
  find -type l >> ~/DATEILISTE
  find -type f | grep -v ^\.\/typo3temp\/ >> ~/DATEILISTE
  sed -i 's/^\.\///g' ~/DATEILISTE
  tar --no-recursion --files-from="~/DATEILISTE" -cf ~/backups/
fi

Die erste Zeile (if) prüft auf eine existierende TYPO3 Installation. Die wird am symbolischen Link zum TYPO3-Quellverzeichnis erkannt. Da TYPO3 empfindlich auf fehlende Verzeichnisse und symbolische Links reagiert, fügen wir alle Verzeichnisse und Links der Dateiliste hinzu (erste 2 Zeilen mit “find”).

Der Befehl “find” beginnt jede Zeile mit “./” was soviel bedeutet wie “Datei im aktuellen Verzeichnis”. Diese entfernen wir schnell mit “sed”.

In der dritten find-Zeile erstellen wir eine Liste ALLER Dateien im TYPO3-Verzeichnis und streichen alles heraus, das mit “/typo3temp/” beginnt. Nun teilen wir tar mit, daß wir nur die Dateien der DATEILISTE haben möchten – voila, das Problem mit den temporären Dateien wäre gelöst. Was aber mit der Datenbank?

Hier sichere ich täglich mit dem MySQL-Dienstprogramm “mysqldump”. Ein direktes Kopieren der MySQL-Dateien aus /var/ wäre wesentlich schneller und genauer, allerdings könnte ich dann nicht selber bestimmen was gesichert wird. Und einige Tabellen aller Datenbanken sind in der Datei /var/lib/mysql/ibdata1 verquirlt – ein Rückspielen ginge dann nur durch Ersatz der kompletten Datenbank. Blöd wenn ein Kunde nur versehenlich eine Tabelle gelöscht hat und die wiederhergestellt haben möchte.

Aber auch mysqldump akzeptiert eine Liste von Tabellen aus einer Datenbank. Man müßte nur diese Liste ein wenig ausdünnen… Das folgende ist in php geschrieben, um die erweiterten Stringverarbeitungsfunktionen zu nutzen:

#!/usr/bin/php
<?php
 echo "#!/bin/bash\n";
 echo "mysqldump -e -C --add-drop-table -u root --password=kennwort -h 127.0.0.1 ".$argv[1]." ";
 $connection = mysql_connect("127.0.0.1", "root", "kennwort");
 if (!$connection) {
 die("Fehler bei der Datenbankverbindung");
 }
 mysql_select_db($argv[1]);
 $res = mysql_query("SHOW TABLES");
 while( $row = mysql_fetch_row($res) ) {
 $table = $row[0];
 if (!(
 substr($table,0,6) == "cache_" ||
 substr($table,0,6) == "index_" ||
 substr($table,0,16) == "cachingframework"
 )) {
 echo $table." ";
 }
 }
?>

Dieses Script sichert nicht, es ist “quick+dirty”, also eklig geschrieben – aber es erstellt ein kurzes Shellscript, welches die Sicherung dann fortführt. Es erstellt eine Liste der Tabellen in einer angegebenen Datenbank, übergeht alle Zeilen, die mit “cache_”, “index_”, oder “cachingframework” beginnen und gibt das erzeugte Script auf der Konsole aus, also bitte die Ausgabe in eine Datei umleiten. Und nicht vergessen, ein “chown 700″ auf diese Ausgabe anzuwenden.

Ich hoffe, daß dieser Artikel allen geplagten Heimanwendern ein paar gute Ansätze für eigene Sicherungsscripts gibt.

CISS: Ein Erfahrungsbericht

Trotz der fallenden Preise für Laserdrucker hat sich zumindest in meinem Privathaushalt der Tintenstrahldrucker als Ausgabegerät durchgesetzt. Diese Geräte haben viele Vorteile, z.B.:

  • Sie unterstützen mehr Papierarten als Laserdrucker, z.B. Briefumschläge in Sondergrößen
  • Höhere Auflösungen im Farbdruck
  • Geringerer Stromverbrauch
  • Geringere Anschaffungskosten

Aber auch die Nachteile sollen nicht verschwiegen werden. So haben Tintenstrahldrucker kleinere Papierkassetten. Dies ist allerdings im Privatbereich kein Problem – hier werden selten Massenmailings zu  tausend Seiten erstellt. Die meisten preiswerten Tintenstrahldrucker verfügen über mehrere Papierschächte, so daß auch der Privatanwender hier mit selbst designtem Briefpapier glänzen darf.

Den extremsten Nachteil aber teilen sich Laser- und Tintenstrahldrucker gleichermaßen: Der Preis für Verbrauchsmaterialien – ob Toner für Laserdrucker, oder Tinte für die – von ihren Besitzern liebevoll “Tintenpisser” genannten – Tintenstrahldrucker ist exorbitant. Als ob die Druckerhersteller die nötigen Billionen für eine bemannte Mondlandung sparen müßten – und zwar bis spätestens 2011!

Literpreise von über 4000 (viertausend!) Euro sind möglich, hat eine Untersuchung des “c’t Magazins für Computertechnik” festgestellt und eindrucksvoll in der “Teuer-Parade” vorgestellt. “Bei unserer Tinte handelt es sich um ein Hochleistungsprodukt; der Preis ist gerechtfertigt”, sagen die Hersteller – unisono.

Aber wie soll ich es mir dann erklären, daß ein Drucker zum Preis von 69,- Euro Tintenpatronen enthält, die im Regal gleich nebenan 72,- Euro kosten?

Die Lösung liegt natürlich in einer Mischkalkulation der Hersteller. Nehmen wir einen potentiellen Kunden, der plant, sich einen Drucker zuzulegen. Auf dem Markt konkurieren dutzende Hersteller mit vielen hundert Modellen. Womit kommt man bei einem deutschen Kunden am Besten an? Der Franzose kauft etwas, das gut aussieht. Der Engländer kauft das mit dem besten Service. Und der Deutsche orientiert sich ausschließlich am Preis. Da alle Drucker ungefähr dasselbe können und Service (für den Druckerhersteller) teuer ist, senken die Hersteller den Druckerpreis, indem sie die Verbrauchsmaterialien extrem verteuern und damit den Drucker sozusagen quersubventionieren. Das Geschäft mit Verbrauchsmaterialien geht ja auch viel länger, denn jeder Drucker braucht zu seinen Lebzeiten etliche Dutzend Tintenpatronen.

Kauft der Kunde kompatible Tintenpatronen, geht dieses Geschäftsmodell nicht mehr auf – die Hersteller verkaufen ihre Drucker dann weit unter Wert und mit Verlust – ärgerlich für die Aktionäre – oder den Vorstand, der sich rechtfertigen muß. Einige Druckerhersteller wählen den amerikanischen Weg mit diesem Problem fertigzuwerden: Mit Rechtsanwälten, die auf Basis von fragwürdigen Patentanmeldungen Mitbewerber in Grund und Boden klagen. Andere Firmen “verdongeln” ihre Patronen mit nicht kopierbaren Chips, der in regelmäßigen Abständen neu entwickelt wird – nämlich, wenn ein findiger Mensch den Chip “geknackt” hat und eigene, billige Chips verkauft, oder im Extremfall sogar ein Gerät verkauft, mit dem ein Chip auf seine Ausgangsstellung zurückgesetzt werden kann.

Ist so etwas geschehen, ist der Weg frei für das Thema des Artikels: Ein CISS.

CISS ist die Abkürzung für “Continuous Ink Supply System”, also eine “Unterbrechungsfreie Tintenversorgung”. Das Prinzip: Externe, riesige Tintentanks werden mit elastischen Schläuchen mit dem Druckkopf des Druckers verbunden und sorgen durch Kapillarkräfte für eine dauerhafte Tintenversorgung.

Fragen: “Warum sollte jemand so etwas wollen?”, “Das ist doch nur etwas für Profis”, “Ja, wenn ich viel drucken würde, könnte sich so etwas lohnen, aber ich drucke ja nur X”. Für die Antwort kommen wir zum echten Preis für 1 Liter Tinte. Die gibt es nämlich im Internet bereits für weniger als 30 Euro den Liter. Selbst wenn man an der Tintenqualität ein paar kleinere Abstriche machen müßte – wären diese Abstriche möglicherweise 3.970 Euro wert? Wohl kaum.

Mein “Canon Pixma iP4500″ hat schon mehr als zwei Jahre auf dem Buckel, laut Wartungsausdruck hat mein Kleiner am 29. November 2007 das Licht der Welt erblickt. Mein Kleiner ist ein Schütze! Süß!

Gekauft habe ich das CISS mit etwas Rabatt auf Ebay – aufgrund der Pläne, einen PayPal-Zwang einzuführen, eine leider aussterbende Möglichkeit. Kostenpunkt: Etwa 50 Euro, je nach Anzahl der Farben und Größe der Tintentanks kann der Preis sich hier aber auch deutlich unterscheiden. In die Tintentanks passen in meinem Fall 500ml, oder ein halber Liter Tinte. In den 50 Euro ist ein halber Liter Tinte aber bereits enthalten.

Das CISS kam vormontiert und befüllt an. Dies kann ich nur wärmstens empfehlen: das Befüllen und Entlüften der Patronen endet in einer gigantischen Sauerei. Das weiß ich aus alter Erfahrung, erstens beim Befüllen von Tintenpatronen und zweitens, nachdem ich an meinem CISS “herumoptimieren” wollte und Luft in den Tintenschlauch und die -Patrone geriet, was eine Entlüftung notwendig machte.

Als Hilfsmittel empfehle ich eine einfache Heissklebepistole (ab 15 Euro im Baumarkt), da eine stabile Montage durch die Unterschiede im Druckerdesign – der Trend geht zu geschwungenen, runden Linien – unmöglich gemacht wird. Man darf sich nicht auf Doppelklebeband verlassen:gerät der Tintenschlauch unter den Druckkopf und wird beschädigt, kann ist die Sauerei grenzenlos werden – ein neuer Drucker muß angeschafft werden.

Nach der Montage sollte der Drucker einige Stunden stehen gelassen werden, damit die Luftblasen eine Chance haben sich zu erheben. Danach erfolgen etliche “Große Reinigungen”, in denen Tinte en masse durch die Düsen gespritzt wird. Keine falsche Scheu, die Literpreise von 4000 Euro sind nicht mehr. In meinem Fall benötigte ich 21 (einundzwanzig!) “große Reinigungen” bis zur reibungslosen Operation.

Wenn so ein Schlauch in den Drucker hineinragt bedeutet das natürlich, daß die Klappe nicht mehr ordentlich zugeht. Abschneiden ist keine Lösung, das Ding war zu teuer. Fazit: Der Sensor muss kurzgeschlossen werden! Das ging bei mir am Besten mit einem Brotverschluss (EUR 1,49 bei ALDI inkl. 500g “Kernbrot Genuss”), den man sich einfach zurechtbiegt und in den Sensorschacht stopft. Möchte man doch mal einen Blick auf die Patronen werfen, kann man diesen Clip einfach rausziehen. (Das ist dieser gelbe Fleck im Foto, vorne rechts im Drucker)

Staub: Ja, das staubt natürlich rein. In einem sauberen Haushalt kein Problem. Bei mir allerdings (bin das exakte Gegenstück zu einem sauberen Haushalt) muss ich oft mit Druckluft pusten (etwa 4 Euro die Dose), weil ich sonst Angst habe der Drucker ginge kaputt und ich müsse dann wieder 4000 Euro für den Liter Tinte bezahlen. Hoffentlich eine Paranoia. Nicht das pusten.

Quellangaben:

Neue ‘OpenSource im Studium’ Lern-CD

Die soeben erschienene Februar-Ausgabe finden Sie im Menü auf der rechten Seite. Viel Spass und Erfolg beim Lernen!

Trittbrettfahrer

Gleich nach welcher Naturkatastrophe auch immer geschieht ein anderes Naturphänomen, in kürzester Zeit stapeln sich nämlich in meiner Inbox die Spendenaufrufe. Mit weinenden Kindergesichtern, verletzten Menschen, Blut und zerstörten Krankenhäusern wird hier die emotionale Botschaft rübergebracht, die zu einem Zücken des Scheckbuchs führen soll.

Es stellt sich dem Zahlungswilligen aber die Frage, welcher der zahlreichen Hilfsorganisationen man seine Hilfsmünzen und -Scheine zukommen lassen soll. Gerade kleine Hilfsorganisationen haben möglicherweise nicht die notwendigen Verbindungen und richten mit ihren ungewollt unwirksamen Hilfeversuchen sogar noch Schaden an. Im schlimmsten Fall melden sich bösartige Trittbrettfahrer, die Spendengelder selber einstecken.

Bei mir klingeln zum Beispiel regelmäßig die mentalen Alarmglocken, wenn ich im Absendernamen des Werbers das Wort “Marketing” finde.

Bei der Entscheidung hilft das “Deutsche Zentralinstitut für soziale Fragen“, welches Hilfsorganisationen regelmäßig prüft und zertifiziert. Das DZI führt auch eine Liste vertrauenswürdiger Hilfsorganisationen zur Katastrophenhilfe Haiti. Das Dokument steht hier zum Download. Auch beim Magazin TEST findet sich unter dem Titel “Seriöse Helfer erkennen” eine Liste mit Tips zum Thema Spenden, ebenso bei Charitywatch.

Also nicht einfach planlos spenden, sondern erst einmal loslesen. Die Opfer werden es Ihnen sogar danken.