Automatisches Backup?

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
schaumi
Mitglied
Beiträge: 104
Registriert: 10.04.2010 17:04
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von schaumi »

Probiere ich mal, Danke
LG
You think you’re safe. You are not.
Benutzeravatar
schaumi
Mitglied
Beiträge: 104
Registriert: 10.04.2010 17:04
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von schaumi »

Ich habe heute Morgen eine Fehlermeldung mit Mail bekommen. Der Job bei "cronjobservice.net" ist angestossen worden, stand aber fest bei "www.meine-domain.de/index.php".
Dadurch wurde zwar das Forum aufgerufen, blieb aber stehen, bis ein Zeitlimit auftrat und die Fehlermeldung auslöste.
Es liegt am Aufruf. Bisher hat mir leider niemand helfen können, wie sich ein "Bot" im Forum über die Parameter anmeldet. Habe hier im Forum schon versucht Informationen zu finden, leider nichts gefunden.
Ein Aufruf mit:

"Botname@www.meine-Domain.de" - kein Ergebnis zum Anstoss des "Automatischen Backup"
"www.meine-Domain.de/index.php?Botname" - kein Ergebnis zum Anstoss des "Automatischen Backup"

habe ich auch mit verschiedenen Kombinationen getestet, leider kein Erfolg.
Ich probiere ja, aber ein stochern im "Nebel" bringt halt nicht viel.
Welche Möglichkeit des Aufrufes zum Anstoss des "Automatischen Backup" gibt es denn?
Danke Schaumi
You think you’re safe. You are not.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von Miriam »

Also ich würde den Aufruf so bewerkstelligen: http://www.anettes-quiltbox-forum.de/cron.php?cron_type=auto_backup
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
schaumi
Mitglied
Beiträge: 104
Registriert: 10.04.2010 17:04
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von schaumi »

Vielen Dank Miriam,
habe Deinen vorgeschlagenen Aufruf in den CronJob eingetragen und werde es versuchen, denn der Versuch macht bekanntlich klug. :)

Nochmals vielen Dank
Schaumi
You think you’re safe. You are not.
Benutzeravatar
Metzle
Ehemaliges Teammitglied
Beiträge: 10435
Registriert: 08.03.2008 02:50
Wohnort: Waiblingen-Neustadt
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von Metzle »

Hallo,

hast du denn auch einen entsprechenden Bot im Forum angelegt? Das ist natürlich auch Voraussetzung.
Metzle
phpBB.de-Support-Team
Allround-phpBB.de
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von Miriam »

Was für ein Bot soll denn das sein? :o

includes/functions.php

Code: Alles auswählen

    // Call cron-type script
    $call_cron = false;
    if (!defined('IN_CRON') && $run_cron && !$config['board_disable'] && !$user->data['is_bot'])
    {
        $call_cron = true;
        $time_now = (!empty($user->time_now) && is_int($user->time_now)) ? $user->time_now : time();

        // Any old lock present?
        if (!empty($config['cron_lock']))
        {
            $cron_time = explode(' ', $config['cron_lock']);

            // If 1 hour lock is present we do not call cron.php
            if ($cron_time[0] + 3600 >= $time_now)
            {
                $call_cron = false;
            }
        }
    } 
Also wenn der User ein Bot ist, bleibt $call_cron unwahr. Wenn die 1-Stunde-Verriegelung aktiv ist auch.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
schaumi
Mitglied
Beiträge: 104
Registriert: 10.04.2010 17:04
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von schaumi »

Erst mal vielen Dank für die Antworten.
- @Metzle: Ich hatte einen Bot angelegt, diesen aber wieder gelöscht.
- Folgende Meldung kam um 1:07 Uhr per Mail:
Hallo schaumi,

Ihr Cronjob Backup konnte nicht fehlerfrei aufgerufen werden. Bitte überprüfen Sie Ihren Cronjob.
Fehlerhafte Aufrufe in Folge: 1

Mit freundlichen Grüßen
Ihr cronjobservice.net Team
- Der Aufruf des Cronjobs war wie Miriam angegeben: "http://www.anettes-quiltbox-forum.de/cr ... uto_backup".

- Der Backup ist gelaufen, ausgelöst durch den User "Anonymous" um 01:06, eigestellt war der Backup um 0:59 Uhr.

Werde den Job "Eingabemäßig" nochmals auf 0:59 aktivieren, wobei sich das Problem ergibt, das die Uhrzeit des Backuplaufs in die Tabelle
phpBB_config in dem Tabellenfeld "auto_backup_last_gc" die nächste Backup-Time einträgt, dann aber wieder mit der CronJobzeit nicht mehr übereinstimmt.
Der Automatische Ablauf hebt sich durch Verschiebung des Zeitfensters auf.
Soweit ich das verstehe, muss eine Änderung in der Datei: acp_auto_backup.php gemacht werden.
Und zwar hier:

Code: Alles auswählen

$this->tpl_name = 'acp_auto_backup';
		$this->page_title = 'ACP_AUTO_BACKUP_SETTINGS';

		$auto_backup_enable = request_var('auto_backup_enable', $config['auto_backup_enable']);
		$auto_backup_filetype = request_var('auto_backup_filetype', $config['auto_backup_filetype']);
		$auto_backup_copies = request_var('auto_backup_copies', $config['auto_backup_copies']);
		$auto_backup_optimize = request_var('auto_backup_optimize', $config['auto_backup_optimize']);
		$auto_backup_gc = request_var('auto_backup_gc', $config['auto_backup_gc']);
		$auto_backup_last_gc = request_var('auto_backup_last_gc', $config['auto_backup_last_gc']);
		$auto_backup_next = $user->format_date($config['auto_backup_last_gc'] + $config['auto_backup_gc'] * 86400);
		$auto_backup_time = $user->format_date($config['auto_backup_last_gc'] + $config['auto_backup_gc'] * 86400, 'Y-m-d-H-i');
		
		$form_name = 'acp_auto_backup';
		add_form_key($form_name);
Die 86400 ist die Multiplikation mit 24, also auf den Nächsten Tag,
Ich überlege, diese beiden Anweisungen zu deaktivieren, also auf Kommentar zu setzen.
Liege ich dann damit richtig?
Natürlich unter der Vorraussetzung, das der CronJob-Aufruf den User "Anonymous" als Auslöser akzeptiert, mit der täglichen Mail kann ich leben (oder auch abstellen).
Vielen Dank
Schaumi
You think you’re safe. You are not.
Benutzeravatar
schaumi
Mitglied
Beiträge: 104
Registriert: 10.04.2010 17:04
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von schaumi »

Der Cronjob ist heute Morgen gegen 1:18 Uhr durch den User "Anonymous" angestossen worden.
Nun fehlt noch zu meinem Glück, das nicht die letzte Backupzeit in die Tabelle eingetragen bzw. überschrieben wird, damit das Zeitfenster erhalten bleibt.
Kann mir einer einen Tipp geben, wo ich das Rücksetzen der Zeit verhindern kann.
Hier ist der code von dem File "acp_auto_backup.php", wo die neue Backup-Zeit gesetzt wird.

- root/includes/acp

Code: Alles auswählen

<?php
/**
*
* @package acp
* @copyright (c) 2011 Pico
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
    exit;
}

/**
* @package acp
*/
class acp_auto_backup
{
    var $u_action;
    function main($id, $mode)
    {
        global $db, $user, $auth, $template;
        global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;

        $action = request_var('action', '');
        $submit = (isset($_POST['submit'])) ? true : false;

        if ($mode != 'index')
        {
            return;
        }

        $this->tpl_name = 'acp_auto_backup';
        $this->page_title = 'ACP_AUTO_BACKUP_SETTINGS';

        $auto_backup_enable = request_var('auto_backup_enable', $config['auto_backup_enable']);
        $auto_backup_filetype = request_var('auto_backup_filetype', $config['auto_backup_filetype']);
        $auto_backup_copies = request_var('auto_backup_copies', $config['auto_backup_copies']);
        $auto_backup_optimize = request_var('auto_backup_optimize', $config['auto_backup_optimize']);
        $auto_backup_gc = request_var('auto_backup_gc', $config['auto_backup_gc']);
        $auto_backup_last_gc = request_var('auto_backup_last_gc', $config['auto_backup_last_gc']);
        $auto_backup_next = $user->format_date($config['auto_backup_last_gc'] + $config['auto_backup_gc'] * 86400);
        $auto_backup_time = $user->format_date($config['auto_backup_last_gc'] + $config['auto_backup_gc'] * 86400, 'Y-m-d-H-i');
        
        $form_name = 'acp_auto_backup';
        add_form_key($form_name);

        if ($submit)
        {
            if (!check_form_key($form_name))
            {
                trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);
            }

            if ($auto_backup_gc <= 0)
            {
                trigger_error($user->lang['AUTO_BACKUP_FREQ_ERROR']. adm_back_link($this->u_action), E_USER_WARNING);
            }

            if (!is_numeric($auto_backup_copies) || $auto_backup_copies < 0)
            {
                trigger_error($user->lang['AUTO_BACKUP_COPIES_ERROR']. adm_back_link($this->u_action), E_USER_WARNING);
            }

            $error = array();

            $message = $user->lang['AUTO_BACKUP_SETTINGS_CHANGED'];
            $log = 'AUTO_BACKUP_SETTINGS_CHANGED';

            $auto_backup_date = explode('-', $auto_backup_last_gc);
            if (sizeof($auto_backup_date) == 5  &&    (strlen($auto_backup_date[0]) == 4) && (strlen($auto_backup_date[1]) == 2) && (strlen($auto_backup_date[2]) == 2) && ((int)$auto_backup_date[3] < 24) && (strlen($auto_backup_date[3]) == 2) && ((int)$auto_backup_date[4] < 60) && (strlen($auto_backup_date[4]) == 2))
            {
                $time_offset = (isset($user->timezone) && isset($user->dst)) ? (int)$user->timezone + (int)$user->dst : 0;
                $auto_backup_last_gc = gmmktime((int)$auto_backup_date[3], (int)$auto_backup_date[4], 0, (int)$auto_backup_date[1], (int)$auto_backup_date[2], (int)$auto_backup_date[0])- $time_offset - $config['auto_backup_gc'] * 86400;
            }
            else
            {
                trigger_error($user->lang['AUTO_BACKUP_TIME_ERROR']. adm_back_link($this->u_action), E_USER_WARNING);
            }

            set_config('auto_backup_enable', $auto_backup_enable);
            set_config('auto_backup_filetype', $auto_backup_filetype);
            set_config('auto_backup_gc', $auto_backup_gc);
            set_config('auto_backup_copies', $auto_backup_copies);
            set_config('auto_backup_optimize', $auto_backup_optimize);
            set_config('auto_backup_last_gc', $auto_backup_last_gc);
            
            add_log('admin', 'LOG_' . $log);
            trigger_error($message . adm_back_link($this->u_action));
        }

        $template->assign_vars(array(
            'U_ACTION'                => $this->u_action,
            'AUTO_BACKUP_ENABLE'    => $auto_backup_enable,
            'AUTO_BACKUP_FILETYPE'    => $auto_backup_filetype,
            'AUTO_BACKUP_GC'        => $auto_backup_gc,
            'AUTO_BACKUP_COPIES'    => $auto_backup_copies,
            'AUTO_BACKUP_OPTIMIZE'    => $auto_backup_optimize,
            'AUTO_BACKUP_NEXT'        => $auto_backup_next,
            'AUTO_BACKUP_TIME'        => $auto_backup_time,
            'AB_GZIP'                => $auto_backup_filetype == 'gzip',
            'AB_BZIP2'                => $auto_backup_filetype == 'bzip2',
            'AB_TEXT'                => $auto_backup_filetype == 'text',
            'GZIP'                    => @extension_loaded('zlib') ? true : false,
            'BZIP2'                    => @extension_loaded('bz2') ? true : false,
        ));
    }
}

?>
Welche Variable muss so gesetzt werden, damit die ursprüngliche Backup-Zeit erhalten bleibt und nicht auf die momentane Backup-Zeit überschrieben wird.
Vielen Dank für eine Unterstützung zur Änderung.
LG Schaumi
You think you’re safe. You are not.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von Miriam »

Streng mal Deine Augen und den Kopf ein bißchen an.

set_config('auto_backup_last_gc', $auto_backup_last_gc);

Auskommentierten kannst Du doch.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
schaumi
Mitglied
Beiträge: 104
Registriert: 10.04.2010 17:04
Kontaktdaten:

Re: Automatisches Backup?

Beitrag von schaumi »

Vielen Dank für die Hilfe Miriam,

Augen sind auf, gefunden und auskommentiert.
Test durchgeführt.
- Wenn die Anweisung "set_config('auto_backup_last_gc', $auto_backup_last_gc);" auskommentiert wird, dann ist der Wert "{ AUTO_BACKUP_DATE_TIME }" in der ACP nicht mehr veränderbar.
- nach einem Backup, wird die aktuelle Backupzeit um 24 Std in die Tabelle zurückgeschrieben.
- in der ACP kann ich den Wert nicht mehr ändern (es sei denn, ich nehme die Auskommentierung zurück)

Ich wollte eigentlich, das die in der ACP vorgegebene Zeit um 24 Std. erweitert wird, also die gleiche Uhrzeit am nächsten Tag.
Beispiel:

Start am 13-11-26-01-00 durch Eingabe in der ACP "{ AUTO_BACKUP_DATE_TIME }"
CronJob wird am 13-11-26-01-44 gestartet, ausgelöst durch den User "Anonymous" vom externen CronJobservice
Backup wird durchgeführt
Übernahme in "{ AUTO_BACKUP_DATE_TIME }" 13-11-27-01-00


Bin ich im falschen php-File?
Das von mir angezeigte File steht im Verzeichnis: root/includes/acl
Es sieht so aus, das das setzen der neuen Backupzeit in einem anderen File stattfindet.
Bin im Moment ratlos,
wo liegt bei mir der Denkfehler?
Vielen Dank
Schaumi

Update: Ich habe es gefunden, in dem File auto_Backup.php im Verzeichnis root/includes steht folgender code

Code: Alles auswählen

* @ignore
*/
if (!defined('IN_PHPBB'))
{
    exit;
}

/**
* Auto Backup
*/
function auto_backup()
{
    global $config, $db, $phpbb_root_path, $phpEx, $table_prefix;

    include($phpbb_root_path . 'includes/functions_install.' . $phpEx);
    include($phpbb_root_path . 'includes/acp/acp_database.' . $phpEx);
    
    $time = time();
    $name = 'backup_' . $time . '_' . unique_id();
    $format = $config['auto_backup_filetype'];

    set_config('auto_backup_last_gc', $time, true);
    add_log('admin', 'LOG_DB_BACKUP');
    
    // Optimize database before backup (only unoptimized tables)
    if ($config['auto_backup_optimize'])
    {
        if ($result = $db->sql_query('SHOW TABLE STATUS'))
        {
            $tables = $db->sql_fetchrowset($result);

            for ($i = 0, $size = sizeof($tables); $i < $size; $i++ )
            {
                if ( $tables[$i]['Data_free'] != 0 )
                {
                    $for_optimize[] = $tables[$i]['Name'];
                }
            }

            if (!empty($for_optimize))
            {
                $tables = implode(',', $for_optimize);
                $db->sql_query('OPTIMIZE TABLE ' . $tables);
            }
        }
    }
    
    @set_time_limit(1200);
    @set_time_limit(0);
    
    switch ($db->sql_layer)
    {
        case 'mysqli':
        case 'mysql4':
        case 'mysql':
            $extractor = new mysql_extractor(false, true, $format, $name, $time);
        break;

        case 'sqlite':
            $extractor = new sqlite_extractor(false, true, $format, $name, $time);
        break;

        case 'postgres':
            $extractor = new postgres_extractor(false, true, $format, $name, $time);
        break;

        case 'oracle':
            $extractor = new oracle_extractor(false, true, $format, $name, $time);
        break;

        case 'mssql':
        case 'mssql_odbc':
            $extractor = new mssql_extractor(false, true, $format, $name, $time);
        break;

        case 'firebird':
            $extractor = new firebird_extractor(false, true, $format, $name, $time);
        break;
    }

    $extractor->write_start($table_prefix);

    foreach (get_tables($db) as $table_name)
    {
        $extractor->write_table($table_name);
        $extractor->write_data($table_name);
    }

    $extractor->write_end();
        
    // Delete backup
    if ($config['auto_backup_copies'])
    {
        $rep = $phpbb_root_path . '/store/';
        $dir = opendir($rep);
        $files = array();
        while (($file = readdir($dir)) !== false)
        {
            if (is_file($rep . $file) && (substr($file, -3) == '.gz' || substr($file, -4) == '.bz2' || substr($file, -4) == '.sql' ))
            {
                $files[$file] = fileatime($rep . $file);
            }
        }
        closedir($dir);

        arsort($files);
        reset($files);

        if (sizeof($files) > $config['auto_backup_copies'])
        {
            $i = 0;
            while (list($key, $val) = each($files))
            {
                $i++;
                if ($i > $config['auto_backup_copies'])
                {
                    @unlink($rep . $key);
                }
            }
        }
    }
}

Eigentlich sollte dort folgender code verändert werden:

Code: Alles auswählen

set_config('auto_backup_last_gc', $time, true);
Ich hoffe, ich liege richtig
LG Schaumi
You think you’re safe. You are not.
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“