Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
Eimsbush

Backup durch CronJob ?

Recommended Posts

moin,

hab mal ne frage was das erstellen von Backups angeht. Würde gerne täglich ein Backup haben...

Da ich aber leider nicht die Zeit habe, ist mir das nicht immer möglich.

Nun meine Frage....ist die per cron job möglich?

Share this post


Link to post

in meinem Angebot vom Hoster habe ich Cronjobs zur Verfügung....weiss nur nicht wie ich die Ausühren muss.

Geht mir um das wie.

Was ich machen muss damit die Datenbank täglich gesichert wird...

Share this post


Link to post

in meinem Angebot vom Hoster habe ich Cronjobs zur Verfügung....weiss nur nicht wie ich die Ausühren muss.

Geht mir um das wie.

Was ich machen muss damit die Datenbank täglich gesichert wird...

äm...

mal ganz blöd zurück gefragt,

aber warum fragst Du denn dann nicht bei dem Support von Deinem Hoster nach ? Schliesslich kann die möglichkeit wie man den CronJob einrichtet , von ISP zu ISP leicht variieren ;) In der Regel hat man um einen Cronjob einzurichten, in seinem Kundenmenü die möglichkeit dazu, wenn es ein Hoster so eingerichtet hat ;) Falls Du Root Zugriff hast, und nen eigenen Server, dann wird bei Linux der CronJob glaube ich eingetragen unter /etc/crontab

Share this post


Link to post

Also wenns dir darum geht, WIE du einen Cronjob einrichtest, damit können wir dir leider nicht helfen, denn das ist, wie Andy gesagt hat, von Hoster zu Hoster unterschiedlich.

Aber ich kann dir kurz erklären was ein Cronjob macht, mir kommts nämlich so vor, als blickst du da noch ned ganz durch.

Ein Cronjob sichert die Datenbank nicht direkt. Das Datenbanksichern macht ein einfaches Script auf deinem Webspace (z.B. Backup.php), dieses stellst du so ein, das es das erwünschte macht, ich kann dir dann später, wenn du's brauchst, ein Script von mir posten.

Eventuell schützt du's auch mit nem Passwort, damit ned jeder ständig Backups durchführen kann, kannst es eigentlich auch einfach per GET übergeben, also kannst du nun deine Datenbank mit dieser URL sichern:

http://www.dein-seite.de/backup.php?pass=strenggeheim

Und nun musst du beim Cronjob nur noch diesen Link eintragen, und eintragen WANN er das machen soll.

Der Cronjob ist sozusagen nur ein Internetuser, der die URL aufruft, weitere Verwaltung was mit em Backup geschiet, wo es hinkommt, und wie's gemacht wird, das macht dein backup.php Programm....

Alles klar soweit ?

Share this post


Link to post

Job. THX euch beiden.

Was ein Cronjob macht wusste ich, nur nicht wie ich den einstze.

Werde mich dann erstmal an meinen Hoster wenden wegen dem Backup-Script - denke die werden da wohl auch ein haben....und wenn nicht, komme ich gerne auf dein Angebot zurück.

THX nochmal

Share this post


Link to post

Ich eröffne mal wieder die "Fragerunde" ;)

Kann den CJ ganz einfach per WI anlegen. Brauche nun nur noch ein Script, das auf php oder cgi basiert...

Wer da ein gutes hat, dem wäre ich sehr dankbar. Vielleicht hat da ja Andy was ;)

Nicht das ich mir da was einbaue, was noch Sachen macht, die ich garnicht möchte....gibt ja immer ein paar schwarze Schaafe, die die unwissenheit anderer ausnutzen...

Share this post


Link to post

Nein, der Andy hat da leider nichts, da der Andy auch weiter noch nie viel mit CronJobs zu tun hatte :D

Aber Blackman hatte Dir ja ein Script angeboten, ich denke darauf solltest Du mal zurückgreifen :)

Share this post


Link to post

hast recht tom....hab ich überlesen....hab das jetzt auch aufn ftp....blicke da nur nicht so wirklich durch, was ich nun eingeben muss...oder kannst mir da jemand helfen?

vielleicht hat Blackman ja sein script noch....und ich komme damit besser zurecht...bzw. er kann es mir dann zur not noch ein wenig erklären/unter die arme greifen....

Share this post


Link to post

Ich hatte da ein kleines, Festplattentechnisches Problem ...

Soll heißen, die Festplatte ist von einem auf den anderen Tag hinüber gewesen, und wie's so ist, sind die Backups immer älter *g*

Also, bei mir ist das Script nicht SOOOOO einfach, aber ich probiers mal genau zu erklären, mir ists so nämlich am liebsten *g*

Erstmal nimmst du ein Verzeichniss in dem das Script, und seine gemachten Backups reinkommen sollen, bei mir heißt das ".backup" der "." ist dafür, damit mans über FTP erst nach Eingabe des LIST ALL Befehls sehen kann ...

Dieses Verzeichniss habe ich für meinen Teil, nun mit HTACCESS geschützt (musst mal schauen, ob dein Hoster das bei den Cronjobs einrichten kann, meiner kann es, wenn nicht, muss das Script eben ein Verzeichniss höher (und leicht modifiziert werden), der Bereich wo die Backups drin sind, MUSS htaccess geschützt werden !

Hier also die .htaccess und die .htpasswd:

.htaccess

#Optionen konfigurieren:

DirectoryIndex index.html index.htm

Options +Indexes

IndexIgnore num.dat backup.php .htaccess .htpasswd /..

FancyIndexing On

IndexOptions NameWidth=* DescriptionWidth=* FoldersFirst SuppressColumnSorting SuppressDescription

IndexOrderDefault Descending Date

AddAlt " " *gz

AddDescription "Backup" *gz

AddIcon "none.gif" *gz

#Passwortabfrage konfigurieren:

AuthType Basic

AuthName "Access for /.backup"

AuthUserFile /www/htdocs/******/.backup/.htpasswd

require user *****

So, die Optionen konfigurieren den Server so, das wenn du dir das Verzeichniss (nach Eingabe des richtigen Namens und Passes) anschaust, er dir NUR die Backup dateien, in Reihenfolge ihrer erstellung anzeigt.

Die Passwortabfrage richtet eben eine Passwortabfrage ein *g*

sensible Sachen hab ich durch ***** ersetzt, diese Werte musst du beim Pfad selber wissen, beim User dir selber aussuchen !

.htpasswd

*****:$2$33IduEn8$8Jd.5cc4Ex5G79s6DYqVo.

Vorne der Benutzername, hinten das Passwort, natürlich verschlüsselt (@Kiddies: Ihr könnt euer Jack the Ripper wieder abschalten, das ist NICHT mein Passwort *g*).

Nun aber zum Script, dem Helden dieser Tage !

(PS: Vergiss nicht dem Ordner mit den Backups einen chmod zu geben, so das andere ihn lesen und schreiben können ... PHP nämlich *g*

Meine backup.php arbeitet folgendermasen:

Es gibt eine kleine Datei namens num.dat, dort steht die Nummer des nächsten Backups drin. Man kann einstellen wieviele Backups er machen soll, bevor er wieder von vorne anfängt, mein Script z.B. macht 14 Backups, und ich starte es per Cron 2 mal täglich !

Der vollständigkeit halber, hier mal die num.dat:

1

*G*

Nun aber zum Script:

<?php

# BackUpScript

# Einstellungen

//error_reporting(E_ALL);

    $datei = fopen("../conf_global.php","r");

    while (!feof($datei))

    {

        $zeile = fgets($datei,1000);

        $input = explode ("']", $zeile);

        $input[0] = substr ($input[0], 7);

        $input[1] = trim ($input[1]);

        $input[1] = substr ($input[1], 3);

        $input[1] = substr ($input[1], 0, -2);

        if ($input[0] == "sql_host")

        {

            $dbhost = $input[1];

        }

        if ($input[0] == "sql_user")

        {

            $dbuser = $input[1];

        }

        if ($input[0] == "sql_pass")

        {

            $dbpass = $input[1];

        }

        if ($input[0] == "sql_database")

        {

            $dbname = $input[1];

        }       

    }

$backupdir = ".backup";

$pfad = $_SERVER['DOCUMENT_ROOT'] . $backupdir;

$datum = date("d.m.Y---H:i:s");

$num = 1;

$datei = fopen($pfad . "/num.dat","r");

$num = fgets($datei, 10);

fclose($datei);

if ($num > 14)

{

    $num = 1;

}

if (strlen($num) == 1)

{

    $num = "0" . $num;

}

$datei = "Backup-----" . $num . ".sql.gz";

system(sprintf('mysqldump -q -a -c -e -h %s -u %s -p%s %s | gzip > %s/%s',

$dbhost, $dbuser, $dbpass, $dbname, $pfad, $datei), $return);

if ($return == 0)

{

$num ++;

$datei = fopen($pfad . "/num.dat","w");

fwrite($datei, $num);

fclose($datei);

$num --;

if (strlen($num) == 1)

{

    $num = "0" . $num;

}

echo 'Backup erfolgreich. <a href="Backup-----' . $num .'.sql.gz">Backup-----' . $num .'.sql.gz</a>';

}

else

{

echo '

Es ist ein Fehler aufgetreten!

Prüfen Sie die Datenbankangaben im Skript und stellen Sie sicher,

das der Datenbankserver korrekt gestartet ist.

';

}

?>

So, und nun pass ichs dir mal kurz so an, wenn das Script auch das unterverzeichniss .backup verwenden würde, aber SELBST nicht drin ist, und zwar ein Verzeichniss drüber ist, im GLEICHEN Verzeichniss, wie die conf_global.php (dort liest nämlich seine Passwörter an) @Stefan & Co: Kein Kommentar, das Passwort einlesen ist eine SCHEIß SCHLECHTE Routine, aber sie funzt *g*:

Nun .. wie ich gerade Sehe muss man scheinbar nix anpassen *G*

Aber nun noch zu den Sachen die du anpassen kannst:

    $datei = fopen("../conf_global.php","r");

Die beiden Punkte VOR /conf_global.php musst du weg machen, wenn du das Script NICHT im .backup Verzeichniss hast.

if ($num > 14)

Hier kannst du die Anzahl der Backups einstellen, bis er wieder von vorne anfängt.

Hoffe du blickst überall durch, wenn nicht, Fragen kostet nichts !

BLACK

Share this post


Link to post

Das oben verlinkte Skript ist nicht schlecht, hilft mir aber z.B. nicht sonderlich weiter. Selbst auf dem Server ausgeführt schafft es große ibf_posts nicht (>100MB). Beim Versuch, die Tabelle zu sichern, wird einfach zu viel Arbeitsspeicher verwendet. :(

Share this post


Link to post

Da das Script oben bereits auf Systemebene arbeitet bleiben dir 2 Optionen:

a) du splittest die ibf_posts in kleinere Häppchen auf, mit dem Risiko, dass beim konvertieren der ein oder andere Post flöten geht

B) du lädst den dumb hoch und fragst deinen Provider / Hoster ob er den mal eben für dich importiert

Edited by Modula

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×