Initial commit

This commit is contained in:
2022-11-21 09:47:28 +01:00
commit 76cec83d26
11652 changed files with 1980467 additions and 0 deletions

617
backup/backup_full.php Normal file
View File

@ -0,0 +1,617 @@
<?php
#error_reporting(E_ALL);
ignore_user_abort(true); // DAMIT DAS SCRIPT AUF KEINEN TIMEOUT L<>UFT
@set_time_limit(0);
@ini_set("memory_limit","128M");
// Script Konfiguration
require("../config/datenbankanbindung.php"); // f&uuml;gt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
$frist = 20; //Anzahl der Tage der Speicherzeit
// Konfiguration Ende
dbconnect();
$path = "dump/";
// -----------------------------------------------------
// Don't change the lines below:
if (!is_dir($path)) { mkdir($path, 0777); }
echo "<b>Datenbank Dump</b><br><br><br>";
echo "Servername: '".$db_host."'<br>";
echo "Betriebssystem: ".php_uname()."<br>";
echo "MySQL-Version: ".mysql_get_server_info()."<br>";
echo "PHP - Version: ".phpversion()."<br><br>";
echo "<table border=\"1\" width=\"60%\">";
echo "<tr>
<td>DB Name</td>
<td>Anzahl Tabellen</td>
<td>Gr<47><72>e</td></tr>";
echo "<tr><td>$db_name</td>";
$database = $db_name;
$zaehler = 0;
$file_name = $path.date("Y-m-d_H-i")."_".$database.".sql";
$text = "# --------------------------------------------------------\r\n";
$text .= "# DATENBANK DUMP\r\n";
$text .= "# Host: ".$db_host."\r\n";
$text .= "# Erstellungszeit: ".date("d. F Y")." um ".date("H:i")."\r\n";
$text .= "# Server Betriebssystem: ".php_uname()."\r\n";
$text .= "# MySQL-Version: ".mysql_get_server_info()."\r\n";
$text .= "# PHP-Version: ".phpversion()."\r\n";
$text .= "# Datenbank: `$database`\r\n";
$text .= "# Backupscript: Alexander Schwarz\r\n";
$text .= "# \r\n";
$text .= "###########################################################################\r\n";
$text .= "# Zeichencodierung der Datei: latin1\r\n";
$text .= "# (ggf. umstellen beim Import, falls die Umlaute falsch dargestellt werden)\r\n";
$text .= "###########################################################################\r\n";
$text .= "# \r\n";
$text .= "# --------------------------------------------------------\r\n\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $text);
fclose($fd);
$header = "# Constraints disablen\r\n";
$header .= "SET FOREIGN_KEY_CHECKS=0;\r\n";
$header .= "SET AUTOCOMMIT=0;\r\n";
$header .= "START TRANSACTION;\r\n";
$header .= "\r\n\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $header);
fclose($fd);
// Alle Datenbanken auf dem Server suchen
$c = 0;
$result2 = @mysql_list_tables($database);
// Tabellenname Array auslesen und aufbauen
for ($i = 0; $i < @mysql_num_rows($result2); $i++)
{
$tabelle = @mysql_tablename($result2,$i);
if ($tabelle != "") {
$tbl_array[$c] = @mysql_tablename($result2,$i);
$c++;
$zaehler++;
}
}
echo "<td align=\"right\">".$zaehler."</td>";
// Start Ausgabe und Berechnung
for ($y = 0; $y < $c; $y++) {
$tabelle = $tbl_array[$y];
// Struktur der Tabelle einlesen
// unset($def,$index);
$def='';
$index=array();
$def .= "DROP TABLE IF EXISTS `$tabelle`;\r\n";
#$def .= "CREATE TABLE $tabelle (\r\n";
// echo"$tabelle<br>";
$result3 = @mysql_db_query($database, "SHOW CREATE TABLE $tabelle");
while ($row = @mysql_fetch_array($result3)) {
$create_query = $row[1];
#####################################
# Entfernung der Constraints:
#####################################
# IF: <20>berpr<70>fung ob im Create Table Statement ein constraint vorkommt.
# erste Zeile wo Constraint vorkommt merken --> $i
# Komma entfernen, da in der letzten Zeile des Creates statements kein komma stehen darf. Das Komma w<>rde bei der Constraint Zeile fehlen, diese wird aber gel<65>scht, daher muss das Komma schon eine Zeile vorher weg
# Schleife 2 starten, wo ersten constraint beginnt $j=$i und die Zeilen mit Constraints auslassen
# Zeilen aus $i und $j mit implode zusammensetzen.
/*
if (preg_match('@CONSTRAINT|FOREIGN[\s]+KEY@', $create_query)) {
$sql_lines = explode(chr(10), $create_query);
$sql_count = count($sql_lines);
// lets find first line with constraints
for ($i = 0; $i < $sql_count; $i++) {
if (preg_match('@^[\s]*(CONSTRAINT|FOREIGN[\s]+KEY)@', $sql_lines[$i])) {
break;
}
}
// Komma entfernen bei der letzten Zeile
$sql_lines[$i - 1] = preg_replace('@,$@', '', $sql_lines[$i - 1]);
for ($j = $i; $j < $sql_count; $j++) {
if (preg_match('@CONSTRAINT|FOREIGN[\s]+KEY@', $sql_lines[$j])) {
if (!$first) {
$sql_constraints .= chr(10);
}
if (strpos($sql_lines[$j], 'CONSTRAINT') === FALSE) {
$str_tmp = preg_replace('/(FOREIGN[\s]+KEY)/', 'ADD \1', $sql_lines[$j]);
$sql_constraints_query .= $str_tmp;
$sql_constraints .= $str_tmp;
} else {
$str_tmp = preg_replace('/(CONSTRAINT)/', 'ADD \1', $sql_lines[$j]);
$sql_constraints_query .= $str_tmp;
$sql_constraints .= $str_tmp;
}
$first = FALSE;
} else {
break;
}
}
$ii = $i-1;
$create_query = implode(chr(10), array_slice($sql_lines, 0, $i)) . chr(10) . implode($crlf, array_slice($sql_lines, $j, $sql_count - 1));
}
*/
$def .= $create_query;
}
#####################################
# Entfernung der Constraints Ende
#####################################
$def .= "; \r\n\r\n";
// Ende Struktur Modul
$db = @mysql_select_db($database);
$tabelle = "".$tabelle;
$text = "#\r\n# Daten f<>r Tabelle `$tabelle`\r\n#\r\n\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $text.$def);
fclose($fd);
// unset($data);
$data='';
if ($tabelle > "") {
$ergebnis[] = @mysql_select_db($database);
$result = @mysql_query("SELECT * FROM $tabelle");
$anzahl = @mysql_num_rows($result);
$spaltenzahl = @mysql_num_fields($result);
for ($i = 0; $i < $anzahl; $i++) {
$zeile = @mysql_fetch_array($result);
$data .= "INSERT INTO `$tabelle` (";
for ($spalte = 0; $spalte < $spaltenzahl; $spalte++) {
$feldname = @mysql_field_name($result, $spalte);
if ($spalte == ($spaltenzahl - 1)) {
$data.= $feldname;
} else {
$data.= $feldname.",";
}
}
$data .= ") VALUES (";
for ($k=0;$k < $spaltenzahl;$k++) {
if ($k == ($spaltenzahl - 1))
{
$flags = mysql_field_flags($result, $k); //auslesen ob die aktuelle Tabelle binarys hat, $k ist die aktuelle Zeile. ZB 8 ==> PWD
$search = array("\x00", "\x0a", "\x0d", "\x1a"); //\x08\\x09, not required
$replace = array('\0', '\n', '\r', '\Z');
if (stristr($flags, 'BINARY')){
if($zeile[$k] != '') //wenn Zeile kein Wert hat soll er auch den HEX-Anfangswert 0x nicht reinschreiben
{
$data .= "0x".str_replace($search, $replace, addslashes(ltrim(bin2hex(rtrim($zeile[$k]))))).""; //Leerzeichen am Anfang und Ende entfernen. Am 22.04.2005 hinzugef&uuml;gt
}else{
$data .= "'".str_replace($search, $replace, addslashes(ltrim(rtrim($zeile[$k]))))."'"; //Leerzeichen am Anfang und Ende entfernen. Am 22.04.2005 hinzugef&uuml;gt
}
}else{
$data .= "'".str_replace($search, $replace, addslashes(ltrim(rtrim($zeile[$k]))))."'"; //Leerzeichen am Anfang und Ende entfernen. Am 22.04.2005 hinzugef&uuml;gt
}
} else {
$flags = mysql_field_flags($result, $k);
if (stristr($flags, 'BINARY')){
if($zeile[$k] != '') //wenn Zeile kein Wert hat soll er auch den HEX-Anfangswert 0x nicht reinschreiben
{
$data .= "0x".str_replace($search, $replace, addslashes(ltrim(bin2hex(rtrim($zeile[$k]))))).","; //Leerzeichen am Anfang und Ende entfernen. Am 22.04.2005 hinzugef&uuml;gt
}else{
$data .= "'".str_replace($search, $replace, addslashes(ltrim(rtrim($zeile[$k]))))."',"; //Leerzeichen am Anfang und Ende entfernen. Am 22.04.2005 hinzugef&uuml;gt
}
}else{
$data .= "'".str_replace($search, $replace, addslashes(ltrim(rtrim($zeile[$k]))))."',"; //Leerzeichen am Anfang und Ende entfernen. Am 22.04.2005 hinzugef&uuml;gt
}
}
}
$data .= ");\r\n";
}
$data .= "\r\n";
} else {
$ergebnis[] = "Keine Tabelle &uuml;bergeben";
}
$fd = fopen($file_name,"a+");
fwrite($fd, $data);
fclose($fd);
} // Ende for
$footer = "# Constraints enablen\r\n";
$footer .= "SET FOREIGN_KEY_CHECKS=1;\r\n";
$footer .= "COMMIT;\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $footer);
fclose($fd);
//-------------------------------------------------------------------
// Constraints hinzuf&uuml;gen
//-------------------------------------------------------------------
/*
// tabllen durchlaufen und bei gefundenen Constraints ADD machen
for ($i = 0; $i < @mysql_num_rows($result2); $i++)
{
$tabelle1 = @mysql_tablename($result2,$i);
if ($tabelle1 != "") {
$tbl_array[$c] = @mysql_tablename($result2,$i);
$c++;
$zaehler++;
}
$query = "SHOW CREATE TABLE $tabelle1";
$create_query = mysql_query($query)
or die ("Cannot execute query");
while ($row = mysql_fetch_array($create_query)){
//echo "$row[1]<p>";
$b = strpos ($row[1], "CONSTRAINT");
//echo "position".$b;
if ($b != NULL){
$c = strlen($row[1]);
// echo "<br>c =".$c;
$d = $c - $b; //l<>nge des reststrings
$e = substr($row[1], $b, $c);
// echo "<br> ergebnis:".$e;
$z = strpos ($e, ") TYPE");
if ($z == NULL){
$z = strpos ($e, ") ENGINE");
}
// echo "<br>position".$z;
$x = strlen($e);
$y = substr($e, 0, $z - 1);
//echo "<br>".$y;
$y = str_replace (array("CONSTRAINT"), array("ADD CONSTRAINT"), $y);
$data='';
$data .= "";
$data .= "--\r\n";
$data .= "-- Constraints der Tabelle `$tabelle1`\r\n";
$data .= "--\r\n";
$y=" ".$y;
$ali = str_replace (array(","), array(",\r"), $y);
$data .= "ALTER TABLE `$tabelle1`\r\n";
$data .= "$ali;\r\n\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $data);
fclose($fd);
}
}
}
*/
$groesse = filesize($file_name) / 1024;
#############################
## Datei packen
#############################
$filename = $path.date("Y-m-d_H-i")."_datenbank.sql.gz";
$zp = gzopen($filename, "w9");
$filecontent = file($file_name);
for ($i=0;$i<count($filecontent);$i++) {
gzwrite($zp,$filecontent[$i]);
}
gzclose($zp);
#############################
## Datei packen Ende
#############################
#############################
## Filesystem sichern
#############################
$filename1 = $path.date("Y-m-d_H-i")."_filesystem.tar.gz";
shell_exec("tar -cvf $filename1 ../ --exclude='../backup/dump/*' --exclude='../backup/$filename1' --gzip");
#############################
## Filesystem sichern Ende
#############################
#############################
## DB + File packen
#############################
$filename = basename($filename);
$filename1 = basename($filename1);
$filename2 = date("Y-m-d_H-i")."_full_backup.tar.gz";
chdir('dump');
shell_exec("tar -cvf $filename2 $filename $filename1 --gzip");
#############################
## DB + File packen ENDE
#############################
echo "file_name: ".$file_name."<br>";
echo "filename: ".$filename."<br>";
echo "filename1: ".$filename1."<br>";
echo "filename2: ".$filename2."<br>";
echo "<td align=\"right\">".number_format($groesse,2)." KB</td></tr>";
echo "</table><br>";
echo "Das DB - Backup wurde erfolgreich durchgef&uuml;hrt.<p>";
chdir('../');
//--KONFIGURATION FTP SICHERUNG--------------------------------------------
require("../config/ftpanbindung.php"); // f&uuml;gt die Datenbankanbindung ein
$Verzeichnis = "./html/leitgedanken/backup/dump/save";
$destination_file = basename($filename2);
//-------------------------------------------------------------------------
$VerbindungsID = ftp_connect($FTPServer);
$LoginErgebnis = ftp_login($VerbindungsID, $FTPUser, $FTPPasswort);
if($VerbindungsID && $LoginErgebnis)
{
echo "Verbunden mit FTP-Server '$FTPServer' als Benutzer '$FTPUser'<p>";
// Upload der Datei
//$upload = ftp_put($VerbindungsID, "$filename2", "$filename2", FTP_BINARY);
$upload1 = @ftp_chdir($VerbindungsID, $Verzeichnis);
$upload =ftp_put($VerbindungsID, "$destination_file", "$path$filename2", FTP_BINARY);
// Upload-Status &uuml;berpr&uuml;fen
if (!$upload) {
echo "Ftp upload war fehlerhaft!<br>";
} else {
echo "Datei $destination_file auf $FTPServer als $destination_file geschrieben<br>";
}
$Dateiliste=ftp_nlist($VerbindungsID, '');
sort($Dateiliste);
echo "Anzahl Dateiliste: ".count($Dateiliste)."<br>";
for($i=0; $i<count($Dateiliste); $i++)
{
$Dateigroesse=ftp_size($VerbindungsID, $Dateiliste[$i]);
echo"<tr>";
if($Dateigroesse=="-1")
{
// Ordner sollen nicht gel<65>scht werden!
}
else
{
$Dateien++;
$Verzeichnisgroesse+=$Dateigroesse;
$dateizeit = ftp_mdtm($VerbindungsID, $Dateiliste[$i]);
$zeit = 60*60*24*$frist;
if(time() - $dateizeit > $zeit)
{
//echo $Dateiliste[$i];
//echo "Dateien, die <20>lter sind als $frist Tag(e) wurden gel<65>scht";
if(ftp_delete($VerbindungsID, $Dateiliste[$i]))
{
echo"$Dateiliste[$i] gel<65>scht!<br>";
}else{
#echo"$Dateiliste[$i] konnte nicht gel<65>scht werden!<br>";
}
}else{
echo "$Dateiliste[$i] nicht innerhalb der L<>schfrist von $frist Tag(e)<br>";
}
}
echo"</tr>";
}
}
else
{
echo"Es konnte keine Verbindung mit dem FTP-Server hergestellt werden.";
}
$Verzeichnis2 = "/segment.ali/";
$destination_file = basename($filename2);
//-------------------------------------------------------------------------
$VerbindungsID = ftp_connect($FTPServer2);
$LoginErgebnis = ftp_login($VerbindungsID, $FTPUser2, $FTPPasswort2);
if($VerbindungsID && $LoginErgebnis)
{
echo "Verbunden mit FTP-Server '$FTPServer2' als Benutzer '$FTPUser2'<p>";
// Upload der Datei
//$upload = ftp_put($VerbindungsID, "$filename2", "$filename2", FTP_BINARY);
$upload1 = @ftp_chdir($VerbindungsID, $Verzeichnis2);
$upload =ftp_put($VerbindungsID, "$destination_file", "$path$filename2", FTP_BINARY);
// Upload-Status &uuml;berpr&uuml;fen
if (!$upload) {
echo "Ftp upload war fehlerhaft!<br>";
} else {
echo "Datei $destination_file auf $FTPServer als $destination_file geschrieben<br>";
}
$Dateiliste=ftp_nlist($VerbindungsID, '');
sort($Dateiliste);
echo "Anzahl Dateiliste: ".count($Dateiliste)."<br>";
for($i=0; $i<count($Dateiliste); $i++)
{
$Dateigroesse=ftp_size($VerbindungsID, $Dateiliste[$i]);
echo"<tr>";
if($Dateigroesse=="-1")
{
// Ordner sollen nicht gel<65>scht werden!
}
else
{
$Dateien++;
$Verzeichnisgroesse+=$Dateigroesse;
$dateizeit = ftp_mdtm($VerbindungsID, $Dateiliste[$i]);
$zeit = 60*60*24*$frist;
if(time() - $dateizeit > $zeit)
{
//echo $Dateiliste[$i];
//echo "Dateien, die <20>lter sind als $frist Tag(e) wurden gel<65>scht";
if(ftp_delete($VerbindungsID, $Dateiliste[$i]))
{
echo"$Dateiliste[$i] gel<65>scht!<br>";
}else{
#echo"$Dateiliste[$i] konnte nicht gel<65>scht werden!<br>";
}
}else{
echo "$Dateiliste[$i] nicht innerhalb der L<>schfrist von $frist Tag(e)<br>";
}
}
echo"</tr>";
}
}
else
{
echo"Es konnte keine Verbindung mit dem FTP-Server hergestellt werden.";
}
#geht-->
$Verzeichnis3 = "/Leitgedanken/backup/";
$destination_file = basename($filename2);
//-------------------------------------------------------------------------
$VerbindungsID = ftp_connect($FTPServer3);
$LoginErgebnis = ftp_login($VerbindungsID, $FTPUser3, $FTPPasswort3);
if($VerbindungsID && $LoginErgebnis)
{
echo "Verbunden mit FTP-Server '$FTPServer3' als Benutzer '$FTPUser3'<p>";
// Upload der Datei
//$upload = ftp_put($VerbindungsID, "$filename2", "$filename2", FTP_BINARY);
$upload1 = @ftp_chdir($VerbindungsID, $Verzeichnis3);
$upload =ftp_put($VerbindungsID, "$destination_file", "$path$filename2", FTP_BINARY);
// Upload-Status &uuml;berpr&uuml;fen
if (!$upload) {
echo "Ftp upload war fehlerhaft!<br>";
} else {
echo "Datei $destination_file auf $FTPServer als $destination_file geschrieben<br>";
}
$Dateiliste=ftp_nlist($VerbindungsID, '');
sort($Dateiliste);
echo "Anzahl Dateiliste: ".count($Dateiliste)."<br>";
for($i=0; $i<count($Dateiliste); $i++)
{
$Dateigroesse=ftp_size($VerbindungsID, $Dateiliste[$i]);
echo"<tr>";
if($Dateigroesse=="-1")
{
// Ordner sollen nicht gel<65>scht werden!
}
else
{
$Dateien++;
$Verzeichnisgroesse+=$Dateigroesse;
$dateizeit = ftp_mdtm($VerbindungsID, $Dateiliste[$i]);
$zeit = 60*60*24*$frist;
if(time() - $dateizeit > $zeit)
{
//echo $Dateiliste[$i];
//echo "Dateien, die <20>lter sind als $frist Tag(e) wurden gel<65>scht";
if(ftp_delete($VerbindungsID, $Dateiliste[$i]))
{
echo"$Dateiliste[$i] gel<65>scht!<br>";
}else{
#echo"$Dateiliste[$i] konnte nicht gel<65>scht werden!<br>";
}
}else{
echo "$Dateiliste[$i] nicht innerhalb der L<>schfrist von $frist Tag(e)<br>";
}
}
echo"</tr>";
}
}
else
{
echo"Es konnte keine Verbindung mit dem FTP-Server hergestellt werden.";
}
echo "<p>";
//Tempor<6F>rdatei l<>schen *.sql
if(@unlink($file_name)){
echo "<b>Die Temor<6F>rdatei $file_name wurde gel<65>scht!</b><br>";
}else{
echo "Die Temor<6F>rdatei $file_name konnte nicht gel<65>scht werden!<br>";
}
//Tempor<6F>rdatei l<>schen *.sql.gz
if(@unlink($path.$filename)){
echo "<b>Die Temor<6F>rdatei $filename wurde gel<65>scht!</b><br>";
}else{
echo "Die Temor<6F>rdatei $filename konnte nicht gel<65>scht werden!<br>";
}
//Tempor<6F>rdatei l<>schen *.sql.gz
if(@unlink($path.$filename1)){
echo "<b>Die Temor<6F>rdatei $filename1 wurde gel<65>scht!</b><br>";
}else{
echo "Die Temor<6F>rdatei $filename1 konnte nicht gel<65>scht werden!<br>";
}
//Tempor<6F>rdatei l<>schen *.sql.gz
if(@unlink($path.$filename2)){
echo "<b>Die Temor<6F>rdatei $filename2 wurde gel<65>scht!</b><br>";
}else{
echo "Die Temor<6F>rdatei $filename2 konnte nicht gel<65>scht werden!<br>";
}
// Schlie<69>en des FTP-Streams
ftp_quit($VerbindungsID);
echo "<p>FTP-Verbindung beendet";
//---------------------------------------------------------
?>