Social Media
Foren
Backup-Möglichkeit aus dem CMS heraus
|
Also als erstes mal eine Ordner backup auf der root-Ebene erstellen. Dort ein Skript mit folgendem Inhalt.:
_________________________________________________________
Ich habe es mal backup.php genannt.
Es wird bei Ausführung eine zip-Datei im backup-Ordner mit dem Namen backup-datum.zip erstellt.
Das muss dann nur noch runter geladen werden.
Damit das funktioniert muss nur noch die Bibliothek PclZip in system/thirdparty gebackt werden. Steht im Übrigen auch unter GNU LESSER GENERAL PUBLIC LICENSE.
Was haltet ihr davon?
PHP-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php
// Include von PclZip
require_once('../system/thirdparty/pclzip/pclzip.lib.php');
$datum = date("d_ m_ y");
// Dateiname
$archive = new PclZip('backup-'.$datum.'.zip');
// Verzeichniss zu Archiv
$v_dir = dirname(getcwd()); // or dirname(__FILE__);
$v_remove = $v_dir;
//Archivbau
$v_list = $archive->create($v_dir, PCLZIP_OPT_REMOVE_PATH, $v_remove);
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>
Archiv wurde erstellt.
|
_________________________________________________________
Ich habe es mal backup.php genannt.
Es wird bei Ausführung eine zip-Datei im backup-Ordner mit dem Namen backup-datum.zip erstellt.
Das muss dann nur noch runter geladen werden.
Damit das funktioniert muss nur noch die Bibliothek PclZip in system/thirdparty gebackt werden. Steht im Übrigen auch unter GNU LESSER GENERAL PUBLIC LICENSE.
Was haltet ihr davon?
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Daniel Busch« (16. Mai 2012, 00:04)
|
Ok, ich arbeite dran.
Edit
So---->
____________________________________________________________________________________________________________________
Dateisystem auf Server siehe Anhänge
_____________________________________________________
Edit
So---->
PHP-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
<?php
// Include von PclZip
require_once('../system/thirdparty/pclzip/pclzip.lib.php');
$datum = date("d_ m_ y");
// Dateiname
$archive = new PclZip('backup-'.$datum.'.zip');
// Verzeichniss zu Archiv
$v_dir = dirname(getcwd()); // or dirname(__FILE__);
$v_remove = $v_dir;
//Archivbau
$v_list = $archive->create($v_dir, PCLZIP_OPT_REMOVE_PATH, $v_remove);
if ($v_list == 0) {
die("Error : ".$archive->errorInfo(true));
}
?>
Archiv wurde erstellt.
<?php
@set_time_limit(0);
include ('../system/dbsettings.php');
//Verbindung zur Datenbank
$verbindung = mysql_connect("$dbhost","$dbuser","$dbpassword") or die("Username/Passwort falsch");
// MySQL Datenbanken
$dbname = array();
$dbname[]= "$db";
// Pfad zur aktuellen Datei
$path = ereg_replace ("\\\","/",__FILE__);
$path = dirname ($path);
$path = trim($path);
// Pfad zum Backup
$path .= "/dbackup/";
// Dateityp
$filetype = "sql";
//Dateieigenschaften
$cur_time=date("d.m.Y H:i");
$cur_date=date("Y-m-d");
//Erstelle Struktur von Datenbank
function get_def($dbname, $table) {
global $verbindung;
$def = "";
$def .= "CREATE TABLE $table (\n";
$result = mysql_db_query($dbname, "SHOW FIELDS FROM $table",$verbindung);
while($row = mysql_fetch_array($result)) {
$def .= " $row[Field] $row[Type]";
if ($row["Default"] != "") $def .= " DEFAULT '$row[Default]'";
if ($row["Null"] != "YES") $def .= " NOT NULL";
if ($row[Extra] != "") $def .= " $row[Extra]";
$def .= ",\n";
}
$def = ereg_replace(",\n$","", $def);
$result = mysql_db_query($dbname, "SHOW KEYS FROM $table",$verbindung);
while($row = mysql_fetch_array($result)) {
$kname=$row[Key_name];
if(($kname != "PRIMARY") && ($row[Non_unique] == 0)) $kname="UNIQUE|$kname";
if(!isset($index[$kname])) $index[$kname] = array();
$index[$kname][] = $row[Column_name];
}
while(list($x, $columns) = @each($index)) {
$def .= ",\n";
if($x == "PRIMARY") $def .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
else if (substr($x,0,6) == "UNIQUE") $def .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
else $def .= " KEY $x (" . implode($columns, ", ") . ")";
}
$def .= "\n);";
return (stripslashes($def));
}
//Erstelle Eintäge von Tabelle
function get_content($dbname, $table) {
global $verbindung;
$content="";
$result = mysql_db_query($dbname, "SELECT * FROM $table",$verbindung);
while($row = mysql_fetch_row($result)) {
$insert = "INSERT INTO $table VALUES (";
for($j=0; $j<mysql_num_fields($result);$j++) {
if(!isset($row[$j])) $insert .= "NULL,";
else if($row[$j] != "") $insert .= "'".addslashes($row[$j])."',";
else $insert .= "'',";
}
$insert = ereg_replace(",$","",$insert);
$insert .= ");\n";
$content .= $insert;
}
return $content;
}
//Funktion um Backup auf dem Server zu speichern
function write_backup($val,$newfile,$newfile_data)
{
global $path,$cur_date,$filetype,$backup_pfad;
$backup_pfad[] = $path.$val."_tabellen_".$cur_date.".".$filetype;
$backup_pfad[] = $path.$val."_eintraege_".$cur_date.".".$filetype;
$fp = fopen ($path.$val."_tabellen_".$cur_date.".".$filetype,"w");
fwrite ($fp,$newfile);
fclose ($fp);
$fp = fopen($path.$val."_eintraege_".$cur_date.".".$filetype,"w");
fwrite ($fp,$newfile_data);
fclose ($fp);
}
//Backup erstellen
while (list(,$val) = each($dbname))
{
$newfile="# Tabellenbackup: $cur_time \r\n# \r\n";
$newfile_data="# Eintraegebackup: $cur_time \r\n# \r\n";
//backup schreiben
$tables = mysql_list_tables($val,$verbindung);
$num_tables = @mysql_num_rows($tables);
$i = 0;
while($i < $num_tables)
{
$table = mysql_tablename($tables, $i);
$newfile .= "\n# ----------------------------------------------------------\n#\n";
$newfile .= "# Tabellen '$table'\n#\n";
$newfile .= get_def($val,$table);
$newfile .= "\n\n";
$newfile_data .= "\n# ----------------------------------------------------------\n#\n";
$newfile_data .= "#\n# Eintraege '$table'\n#\n";
$newfile_data .= get_content($val,$table);
$newfile_data .= "\n\n";
$i++;
}
write_backup($val,$newfile,$newfile_data);
} //End: while
?>
Datenbankbackup ist fertig.
|
____________________________________________________________________________________________________________________
Dateisystem auf Server siehe Anhänge
_____________________________________________________
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »Daniel Busch« (16. Mai 2012, 00:06)
|
EIn paar kleine Verbesserungsvorschläge
- Language-Klasse benutzen, um es auch auf Englisch bzw. bald auch auf polnisch zum laufen zu bringen
- Dann noch als geplante Aufgabe: http://www.contentlion.de/doku/geplante-aufgaben.html
- Zu guter letzt eine Möglichkeit die Aufgabe im Backend zu deaktivieren und das ganze auch manuell zu starten
- Language-Klasse benutzen, um es auch auf Englisch bzw. bald auch auf polnisch zum laufen zu bringen
- Dann noch als geplante Aufgabe: http://www.contentlion.de/doku/geplante-aufgaben.html
- Zu guter letzt eine Möglichkeit die Aufgabe im Backend zu deaktivieren und das ganze auch manuell zu starten
|
Bevor ich mich an das Formularproblem wage werde ich mich ersteinmal mit dem Backupsystem weiter befassen.
Also:
Also:
Zitat
- Language-Klasse benutzen, um es auch auf Englisch bzw. bald auch auf polnisch zum laufen zu bringen
- Dann noch als geplante Aufgabe: http://www.contentlion.de/doku/geplante-aufgaben.html
- Zu guter letzt eine Möglichkeit die Aufgabe im Backend zu deaktivieren und das ganze auch manuell zu starten
|
Backupumfrage
Soll die Backupfunktion in den Core oder als Plugin erstellt werden
Insgesamt 7 Stimmen
57%
Implementierung als Corefunktion? (4)
43%
Realisierung als Plugin? (3)
Was meint Ihr?
|
Ich bin klar gegen die Einbindung als Plugin. Da meine Begründung eher eine Frage des Grundkonzepts von ContentLion ist und auch etwas länger ausfällt, bitte ich euch das hier zu lesen und diskutieren: http://blogs.contentlion.org/stefan-wien…hlanker-werden/
|
Für mich MUSS diese Funktion im Core inbegriffen sein.
Wenn wir eine solide Stellung am Mark haben wollen, muss soetwas meiner Meinung nach inkludiert sein und bestens funnktionieren.
Konzeptioniert sollte es halt so sein das egal welche Version der Benutzer verwendet, er immer seine Backups einspielen kann.
Wenn wir eine solide Stellung am Mark haben wollen, muss soetwas meiner Meinung nach inkludiert sein und bestens funnktionieren.
Konzeptioniert sollte es halt so sein das egal welche Version der Benutzer verwendet, er immer seine Backups einspielen kann.
Ähnliche Themen
-
- Neue Ideen »
- Pluginideen für Social Media (1. April 2012, 13:53)
-
- Neue Ideen »
- Importfunktion bestehender Daten (8. April 2012, 14:00)