Cronjobs von Zuhause aus 19. April 2006 um 15:03 Uhr / Programming
Vor ein paar Tagen berichtete Manuela über Cronjobs kostenlos - Cronjob.de. Dieser dienst fordert, so weit ich das verstanden habe, eine zur angegebenen Zeit eine Seite auf dem eigenen Webspace an, hinter der sich dann zum Beispiel ein Datenbank-Sicherungs-Script verbirgt. Da kam mir die Idee,das man sich, wenn der eigene Rechner sowieso, wie meiner, durchläuft, oder wenn man einen anderen Server mit Cronjob möglichkeit hat, gar nicht auf Cronjob.de verlassen muss.
cURL
cURL hatte ich ja schon einmal in einem früheren Posting über Manuelle Trackbacks vorgestellt. Es ist ein Programm für die Kommandozeile um Resourcen über HTTP, FTP und andere Protokole abzufragen. cURL verhält sich dabei wie ein ganz normaler Browser und kann auch Cookies, Passwörter und andere schöne Sachen. Wenn man dann z.B. ein PHP Script hat, welches eine bestimmte Aufgabe erledigt kann man es entweder von Hand über den Browser (Firefox, Opera, etc.) aufrufen, oder in die Kommandozeile etwas in dieser Art reinschreiben:
curl http://example.com/dump.php
… was die gleiche Wirkung hat, nur dass die Ausgabe dann in der Kommandozeile erfolgt. Falls man das umleitet sogar in eine Datei:
curl http://example.com/dump.php -o dump.sql.tar.gz
Sinnvoll ist es dabei die Daten auf dem Server gleich zu zippen (packen) um Traffic über das Internet, und Platz auf der Festplatte zu sparen. Wunderbar, aber wo ist dabei der Vorteil gegenüber dem Aufrufen im Browser?
Cronjob, bzw. Taskplaner
Ok, die Unixer/Linuxer werden wohl fast alle irgendein cron Programm installiert haben. Aber auch die, die unter Windows leiden arbeiten haben auf ihrem System so eine Funktionalität, dort heißt es Taskplaner. Ich gehe hier jetzt nicht näher auf die Installation und Konfiguration der Programme ein, sondern verwise mal auf unixgeeks | Intro to cron (Englisch) und Microsoft | Planen eines neuen Tasks.
Und nun die Verschmelzung
Ja ihr habt richtig geraten, diese zwei Programme können zusammenarbeiten, denn cron, bzw Taskplaner sind nur für das Ausführen von anderen Programmen in bestimmten Zeitabständen, bzw. zu einem Bestimmten Zeitpunkt zuständig. Das schöne ist, dass alles komplett im Hintergrund abläuft, am besten noch nachts, wenn sowieso niemand am Rechner sitzt.
Man konfiguriert also cron/Taskplaner so, dass er zum Beispiel jeden tag um 3:00 Uhr nachts diesen Befehl ausführt:
curl http://example.org/dump.php -o "C:/Dokumente und Einstellungen/Administrator/Eigene Dateien/Backups/example_org.sql.tar.gz"
Dann ruft der Rechner diese Seite auf uns speichert die Ausgabe in der Datei example_org.sql.tar.gz
ab. Die Anführungszeichen sind dazu da, damit die Leerzeichen im Pfad als zum Pfad dazugehörig angesehen werden.
Man kann das Script die Daten aber auch direkt auf dem Server speichern lassen und die Ausgabe mit -s
unterdrücken, oder einfach verwerfen. Man kann sein Script auch Passwortgeschützt mit .htaccess oder sonst wie sichern. Weitere Informarionen zu cURL findet man auf Englisch auf der cURL manpage.
Wie oben erwähnt ist man nun von externen Diensten unabhängig, so lange der Rechner Zugang zum Internet hat. Wenn man vielleicht sogar einen Bekannten hat, der noch ein paar cronjobs auf seinem Server frei hat, kann man diese somit auf für den eigenen Server, welcher ohne diese Funktionalität auskommen muss, nutzen. Und nun viel Spaß beim cronen und cURLen ;-).
Pingbacks
Kommentare
Die Kommentare sind für diesen Eintrag geschlossen.
Felix Riesterer aus Deutschland, Baden-Wuerttemberg schrieb am 20.04.2006
Jeena Paradies aus Varberg schrieb am 21.04.2006
Dennis schrieb am 23.04.2006
In der Tat, Jeena - mal interessant so ein Ruby-Script zu sehen ;-)
Gilt in Ruby der Zeilenumbruch als Befehls-Trenner? Hm, das gefällt mir nicht so... Da muss ich die ganze Zeit an VisualBasic denken :-\
Sven schrieb am 24.04.2006
Gebräuchlicher als curl ist meines Erachtens heute wget - in vielen Linux-Distributionen wird das jedenfalls standardmäßig eingesetzt. Die Funktionsweise ist natürlich analog ;)
Grüße,
Sven
Dennis schrieb am 28.04.2006
Ich würde dir nicht zustimmen, dass wget gebräuchlicher ist als curl, erst recht nicht heutzutage - man kann wget und curl meiner Meinung nach nicht so einfach vergleichen, da die Anwendungsziele zwei verschiedene sind:
* wget: Abrufen von URLs, das gerne auch rekursiv, gedacht
* curl: Abrufen von URLs aber mehr um ganz bestimmte Requests an den Server zu schicken, z.B. mit speziellen Post-Daten, Cookies etc.
Es ist einfach so, dass curl dir einen größeren Funktionsumfang bietet, du kannst es z.B. nutzen indem du es in eigene Projekte integrierst um irgendwelche Aktionen über HTTP auszulösen. Trotzdem würde ich curl nicht verwenden um z.B. eine zip-Datei herunterzuladen und zu speichern, dazu ist dann wiederum wget besser geeignet.