MyOOSDumper Automatische Datensicherung erstellen.

MyOOS [Dumper]ist ein Sicherungsprogramm für MySQL-Datenbanken. Damit können Sicherungskopien der Daten (Forum, Shop, Blog, usw.) erstellt und bei Bedarf auch wieder hergestellt werden. Besonders bei Web-Space ohne Shell-Zugang bietet sich MyOOS [Dumper] als sinnvolle Alternative an.
Antworten
DUKE
Beiträge: 1
Registriert: 03.12.2016, 11:17

MyOOSDumper Automatische Datensicherung erstellen.

Beitrag von DUKE »

Hallo alle hier,

Ich würde gerne mit MyOOSDumper PHP7 eine Automatische Datensicherung erstellen unter ALL-Inkl.com.
Kann mir einer von euch da weiterhelfen wie ich das anstellen muß das es über Cronjob ausgeführt wird.
Das ist ein Script von All-Inkl.com für die Datensicherung,würde gerne das ganze mit MyOOSDumper machen und am besten auch die FTP Daten sichern.

Danke

Folgende Schritte sind notwendig:
  • 1. Legen Sie im FTP-Hauptverzeichnis Ihrer Domain einen Unterordner "backup" an.

    2. Geben Sie über Ihr FTP-Programm dem Ordner eine Schreibberechtigung (CHMOD) von 777.

    3. Erstellen Sie in dem Ordner eine PHP-Datei (db_backup.phpx) mit folgendem Inhalt:

Code: Alles auswählen

<?php
######## einstellungen #############################################
$db_name = "IhreDatenBank";
$db_passwd = "IhrDatenBankPasswort";
$downloadlink_erstellen = "ja";

$bestaetigungsmail_senden = "ja";

$bestaetigungsmail_adresse = "IhreMailAdresse";
$bestaetigungsmail_betreff = "[BACKUP] Ihr Backupscript";

$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";

####################################################################
################## AB HIER BITTE NICHTS MEHR ÄNDERN!!! ################

### daten überprüfen
if ( $db_name == "IhreDatenBank" or $db_passwd == "IhrDatenBankPasswort" )
{
die("FEHLER: Sie m&uuml;ssen zun&auml;chst Ihre Datenbankdaten im Script eingeben!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("FEHLER: Das zu erstellende Dump existiert bereits!");
}

## dump erstellen
exec("mysqldump -u $db_name -p'$db_passwd' --quick --allow-keywords --add-drop-table --complete-insert --quote-names $db_name >$sql_file");
exec("gzip $sql_file");

### größe ermitteln
$datei = $sql_file . ".gz";
$size = filesize($datei);
$i = 0;
while ( $size > 1024 )
{
$i++;
$size = $size / 1024;
}
$fileSizeNames = array(" Bytes", " KiloBytes", " MegaBytes", " GigaBytes", " TerraBytes");
$size = round($size,2);
$size = str_replace(".", ",", $size);
$groesse = "$size $fileSizeNames[$i]";

### nachricht erstellen
$message = "Ihr Backup der Datenbank <b>" . $db_name . "</b> wurde durchgef&uuml;hrt.<br>";
$message .= "Die Gr&ouml;&szlig;e des erstellten Dumps betr&auml;gt <b>" . $groesse . "</b>.<br>";

if ($downloadlink_erstellen == "yes" or $downloadlink_erstellen == "ja" or $downloadlink_erstellen == "1")
{
$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$link = str_replace(basename(__FILE__),$datei,$link);
$message .= "Downloadlink: <a href=" . $link . ">" . $datei . "</a>";
}

## nachricht ausgeben
echo $message;

### mail versenden
if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "ja" or $bestaetigungsmail_senden == "1")
{
if(!preg_match( '/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/' , $bestaetigungsmail_adresse))
{
echo "<br>FEHLER: Mail konnte nicht versendet werden, da die Adresse ung&uuml;ltig ist!";
}
else
{
mail($bestaetigungsmail_adresse, $bestaetigungsmail_betreff,
$message,"From: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Reply-To: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Content-Type: text/html\r\n")
or die("FEHLER: Mail konnte wegen eines unbekannten Fehlers nicht versendet werden");
echo "<br>Best&auml;tigungsmail wurde erfolgreich versandt!";
}
}
?>
r23
Beiträge: 2622
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: MyOOSDumper Automatische Datensicherung erstellen.

Beitrag von r23 »

Hallo,

herzlich Willkommen.

DUKE hat geschrieben: Ich würde gerne mit MyOOSDumper PHP7 eine Automatische Datensicherung erstellen unter ALL-Inkl.com.
Kann mir einer von euch da weiterhelfen wie ich das anstellen muß das es über Cronjob ausgeführt wird.
Für den Cronjob stehen Perl Scripte zur Verfügung
Bild

Meine Perl Kenntnisse sind allerdings nicht auf den aktuellen Stand. Einfach selber anpassen.

Wenn man mit PHP Sichern möchte, könnte man das dump.php oder filemanagement.php verwenden. Vermutlich sind hier allerdings leichte Anpassungen notwendig.

Für das CronJob Script würde ich Snoopy https://github.com/endroy/Snoopy verwenden

[php]
/*
You need the snoopy.class.php from
http://snoopy.sourceforge.net/
*/

include("snoopy.class.php");

$snoopy = new Snoopy;

// need an proxy?:
//$snoopy->proxy_host = "my.proxy.host";
//$snoopy->proxy_port = "8080";

// set browser and referer:
$snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$snoopy->referer = "http://www.jonasjohn.de/";

// set some cookies:
$snoopy->cookies["SessionID"] = '238472834723489';
$snoopy->cookies["config_file"] = "myoosdumper";

// set an raw-header:
$snoopy->rawheaders["Pragma"] = "no-cache";

// set some internal variables:
$snoopy->maxredirs = 2;
$snoopy->offsiteok = false;
$snoopy->expandlinks = false;

// set username and password (optional)
//$snoopy->user = "joe";
//$snoopy->pass = "bloe";

// hier das Backup Forumular ausfüllen.
$submit_url = "http://localhost/msd/filemanagement.php ... ump&kind=0";

$submit_vars["dump"] = "Neues Backup starten";
[usw... was vom Script benötigt wird

$snoopy->submit($submit_url,$submit_vars);
print_r($snoopy->results);
[/php]

In der Erweiterung kann man sich auch die daten vom FTP-Server sichern.

DUKE hat geschrieben: Das ist ein Script von All-Inkl.com für die Datensicherung,würde gerne das ganze mit MyOOSDumper machen und am besten auch die FTP Daten sichern.

## dump erstellen
exec("mysqldump -u $db_name -p'$db_passwd' --quick --allow-keywords --add-drop-table --complete-insert --quote-names $db_name >$sql_file");
exec("gzip $sql_file");

[/code]
Wenn bei dem Hoster exec("mysqldump zur Verfügung steht - würde ich dies verwenden.

Per se sollte der Hoster ein Backup der Dateien und Datenbank zur Verfügung stellen und über eine Administrationsoberfläche eine schnelle Wiederherstellung ermöglichen. Sollte der Hoster kein Backup anbieten, dann ist es Zeit den Hoster zu wechseln.

Beste Grüße

Ralf
Herki
Beiträge: 29
Registriert: 03.01.2019, 05:13

Re: MyOOSDumper Automatische Datensicherung erstellen.

Beitrag von Herki »

DUKE hat geschrieben: 03.12.2016, 11:40 Ich würde gerne mit MyOOSDumper PHP7 eine Automatische Datensicherung erstellen unter ALL-Inkl.com.
Kann mir einer von euch da weiterhelfen wie ich das anstellen muß das es über Cronjob ausgeführt wird.
Ich hoste meine Homepages bei ALL-Inkl.com und habe keinerlei Probleme mit den eingerichteten Cronjobs in Zusammenhang mit dem MSD-V2.0.117.

MSD
1. bei Cronjob den Pfad für Perlscript auf "/cgi-bin/" definieren
2. die crondump.pl in das Verzeichnis cgi-bin kopieren
All-Inkl.com
1. den vom MSD angegebenen Pfad "https://example.com/cgi-bin/crondump.pl?config=bezeichnung" für externen Cronjob bei All-Inkl..com eintragen.
> ACHTUNG: das msd/ ist zu entfernen. (es wird vom MSD leider inkorrekt angegeben)
2. Zeitpunkte der Datensicherung nach Wahl definieren.
3. Cronjob auf "aktiv" setzen
Jaydee
Beiträge: 7
Registriert: 06.12.2019, 11:29

Re: MyOOSDumper Automatische Datensicherung erstellen.

Beitrag von Jaydee »

Hallo,

der Thread ist zwar schon etwas älter, aber zur Sicherheit für spätere Leser:
Herki hat geschrieben: 03.01.2019, 05:50 1. den vom MSD angegebenen Pfad "https://example.com/cgi-bin/crondump.pl?config=bezeichnung" für externen Cronjob bei All-Inkl..com eintragen.
> ACHTUNG: das msd/ ist zu entfernen. (es wird vom MSD leider inkorrekt angegeben)
Eigentlich nicht. :wink: Der Dumper macht an der Stelle eigentlich nichts anderes, als den (relativen oder absoluten, je nach Aufruf) Server-Pfad auszulesen und anzuzeigen.
Standard ist tatsächlich "/msd", aber wenn Du den z. B. in "/msd-meinforum-420" oder wie auch immer änderst, steht dann dort auch genau das, also komplett z.B. etwas wie:

Aufruf im Browser oder für externen Cronjob:
(https://www.)mein-forum.de/msd-meinforum-420/msd_cron/crondump.pl?config=myoosdumper

oder für die crondump.pl halt so:
/home/www/doc/(Kundennummer)/mein-forum.de/www/msd-meinforum-420/work/config/

In diesen Fällen steht dort nirgendwo noch etwas von /msd/, der Dumper kann an der Stelle also eigentlich gar nichts falsch machen. Der dort angezeigte Pfad ist immer abhängig von der Pfadstruktur des jeweiligen Hosters (egal ob allinkl oder Hetzener oder Artfiles oder wer auch immer) sowie Deiner Domain und Verzeichnis-Struktur.
Wenn der Dumper aber bei Dir in /msd/mein-msd/ oder ähnlich liegen sollte, dann wird natürlich das MSD auch mit angezeigt, klar. Aber es wir nicht einfach so "eingebaut" vom Dumper. :wink:
matthias.kappenberg
Beiträge: 1
Registriert: 23.10.2023, 00:01

Re: MyOOSDumper Automatische Datensicherung erstellen.

Beitrag von matthias.kappenberg »

Hier (m)ein Weg... wie es bei all-inkl.com gehen kann
Für Senior Devs, dauert nur 10-15Min...
Für Enthusiasten die gerade anfangen, kann einen Keks länger dauern....

Ausgangspunkt: all-inkl.com Privat Plus Account
Los gehts....
eine Domain oder Subdomain anlegen im KAS:

Gegeben sei Deine Domain: https://backup.example.com//

(im Webroot sollte man aus meiner Sicht eher nichts installieren)
Domain zeigen lassen auf "/backup.example.com/" und im Webspace dann im Ordner:
/backup.example.com/
my_oos Dumper installieren.

Ich gehe davon aus, das alles gut läuft und Du Deine Datenbank siehst
und das Du auch einen Verzeichnisschutz !!!! erstellt hast.

Nun unter "Konfiguration" -> "Cronscript" eine Konfiguration erstellen, "Dateiendung des Scripts: " .pl
Damit wäre man dann im my_oos fertig.

Weiter gehts :-)
Dann all-inkl.com Bastelanleitung lesen:
https://all-inkl.com/wichtig/anleitunge ... n_304.html

also eine heitere PHP Datei erstellen mit folgendem Inhalt (siehe Bastelanleitung -> PERL) z.B im my_oos Root Folder:
cron_backups.php
(jaaaa, besser woander erstellen, wenn man automatisierte Updates macht...
also: Wo ist egal, Hauptsache erreichbar und Schutz ist wichtig, Du willst nicht das jemand das einfach so aufrufen kann)
Hier nun der Code für die PHP Datei:
______________________________________________________________

Code: Alles auswählen

<?php
exec("/usr/bin/perl /www/htdocs/DEIN_ACCOUNT/backup.example.com//mod_cron/crondump.pl  2>&1", $out, $result);
echo "Returncode: " .$result ."<br>";
echo "Ausgabe des Scripts: " ."<br>";
echo "<pre>"; print_r($out);
______________________________________________________________
Für Enthusiasten : Diese Datei ruft das Perl Script via PHP auf, kein Voodoo....
die echo Ausgaben kann man auch mit # oder // vor dem echo auskommentiren, also z.B.:
// echo "Returncode: " .$result ."<br>";

Hier kann auch: .../crondump.pl durch .../perltest.pl getauscht werden, wenn Du schauen möchtest ob alles geht.

Wenn du nun:
https://backup.example.com//cron_backups.php
aufrufst, dann sollte eine Ausgabe im Browser kommen,
im besten Fall sollte auch ein neues Backup erstellt worden sein im Folder .../work/backup/

Noch ein Schritt weiter... nicht Entwickler nicht erschrecken, Du schaffst das, alle kochen mit Wasser :-)

Wenn Du Mails erhalten möchtest, kann es sein, das Variablen fehlen in der Datei:
/work/config/*.conf.php, daher hier (m)eine einfache Version:
______________________________________________________________
<?php
# zu den Variablen: /mod_cron/crondump.pl anschauen
# gegeben sei:
# Deine Installation liegt in:
# /backup.example.com/
#Vars - written at 2023-10-22 <--- :-)
$dbhost="localhost";
$dbname="DEIN_DB_NAME";
$dbuser="DEIN_DB_USER";
$dbpass="DEIN_DB_PASSWORD";
$dbport=3306;
$dbsocket="";
$compression=1;
$backup_path="/www/htdocs/w00...DEIN_ACCOUNT/backup.example.com//work/backup/";
$logdatei="/www/htdocs/w00...DEIN_ACCOUNT/backup.example.com//work/log/myoosdumper_perl.log.gz";
$completelogdatei="/www/htdocs/w00...DEIN_ACCOUNT/backup.example.com//work/log/myoosdumper_perl.complete.log.gz";
$sendmail_call="/usr/sbin/sendmail -t -i";
$nl="\n";
$cron_dbindex=0;
$cron_printout=1;
$cronmail=1; // 1 fuer, ja... will mail haben
$cron_use_sendmail=0; // 0 wir versuchen es mal via SMTP
$cronmail_dump=0; // 1, dann sendet my_oos den DB Dump per Mail.... eher nich machen
$cronmailto="wichtig_escape_at\@example.com/"; // WICHTIG ein \ vor das @, also mail\@example.com/
$cronmailto_cc="";
$cronmailfrom="wichtig_escape_at\@example.com/";
$cron_use_mail=1;
$cron_smtp="w00...DEIN_ACCOUNT.kasserver.com";
$cron_smtp_port="587";
@cron_db_array=("DEIN_DB_NAME");
@cron_dbpraefix_array=("");
@cron_command_before_dump=("");
@cron_command_after_dump=("");
@ftp_server=("","","");
@ftp_port=(21,21,21);
@ftp_mode=(0,0,0);
@ftp_user=("","","");
@ftp_pass=("","","");
@ftp_dir=("/","/","/");
@ftp_timeout=(30,30,30);
@ftp_useSSL=(0,0,0);
@ftp_transfer=(0,0,0);
$mp=0;
$multipart_groesse=1048576;
$email_maxsize=3145728;
$auto_delete=0;
$max_backup_files=3;
$perlspeed=10000;
$optimize_tables_beforedump=0;
$logcompression=1;
$log_maxsize=1048576;
$complete_log=1;
$my_comment="Dein schneidiger Kommentar";

______________________________________________________________
und wenn du nun:
https://backup.example.com//cron_backups.php
aufrufst, solltest Du auch eine E-Mail erhalten, ohne Fehlermeldungen :-)


Wenn da alles funktioniert hat, dann einfach im KAS (https://kas.all-inkl.com/)
unter "Tools" -> "Cronjobs" einen neuen Cronjob erstellen, HTTP Benutzer und HTTP Passwort unter "zusätzliche Einstellungen"
nicht vergessen... fertich is :-)

Happy Cronjob mit Mail Bestätigung .

Ich hoffe das ich nichts vergessen habe, alles gut bei Dir läuft und freue mich über auch über Kritik :-)
r23
Beiträge: 2622
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: MyOOSDumper Automatische Datensicherung erstellen.

Beitrag von r23 »

Hallo,

vielen Dank für die umfangreiche Anleitung und sorry für die Unannehmlichkeiten bei den ersten Veröffentlichungen. Die ersten x Beiträge gehen durch eine Kontrolle. Danach nicht mehr.

matthias.kappenberg hat geschrieben: 23.10.2023, 01:32

Code: Alles auswählen

<?php
exec("/usr/bin/perl /www/htdocs/DEIN_ACCOUNT/backup.example.com/mod_cron/crondump.pl  2>&1", $out, $result);
echo "Returncode: " .$result ."<br>";
echo "Ausgabe des Scripts: " ."<br>";
echo "<pre>"; print_r($out);
______________________________________________________________
Wir könnten die Datei in unser Projekt aufnehmen.

einfach ein Pull requests https://github.com/r23/MyOOS/pulls senden

Viele Grüße

Ralf
Antworten