string(46) "7828719865:AAGAYuhUTItwvW6wW1PA4nR4X--S41bFmUg" Pro Website Management 🚀

Управление бэкапами MySQL прямо из админ-панели

Pro Website Management 04.04.2025 14:34
Управление бэкапами MySQL прямо из админ-панели
 Создание бэкапа

Нажмите "Сохранить базу целиком" для полного бэкапа или выберите таблицы и нажмите "Создать бэкап". Файлы сохраняются в /backups/.

 Восстановление бэкапа

Выберите файл из списка и нажмите "Восстановить". Текущая база будет заменена.

 Автосохранение

Включите автосохранение, выберите частоту и укажите максимальное количество бэкапов. Для работы автосохранения добавьте в cron:

# Каждый час
0 * * * * php /home/u762384583/domains/masterok.lt/public_html/cron/backup.php hourly

# Каждые 2 часа
0 */2 * * * php /home/u762384583/domains/masterok.lt/public_html/cron/backup.php 2hours

# Каждые 3 часа
0 */3 * * * php /home/u762384583/domains/masterok.lt/public_html/cron/backup.php 3hours

# Ежедневно
0 0 * * * php /home/u762384583/domains/masterok.lt/public_html/cron/backup.php daily

# Еженедельно
0 0 * * 0 php /home/u762384583/domains/masterok.lt/public_html/cron/backup.php weekly
                            

Создайте файл /home/u762384583/domains/masterok.lt/public_html/cron/backup.php со следующим содержимым:

<?php
require_once '/home/u762384583/domains/masterok.lt/public_html/includes/db.php';
$settings = include '/home/u762384583/domains/masterok.lt/public_html/uploads/site_settings.php';
if ($settings['backup']['auto_backup'] && $settings['backup']['frequency'] === $argv[1]) {
    $backup_dir = '/home/u762384583/domains/masterok.lt/public_html/backups/';
    $filename = create_backup($conn, $backup_dir); // Полный бэкап
    $backups = glob($backup_dir . '*.sql');
    if (count($backups) > $settings['backup']['max_backups']) {
        array_map('unlink', array_slice($backups, 0, count($backups) - $settings['backup']['max_backups']));
    }
}

function create_backup($conn, $backup_dir, $tables = []) {
    $filename = $backup_dir . 'backup_' . date('Ymd_His') . '.sql';
    $sql = "-- Бэкап базы данных u762384583_tender " . date('Y-m-d H:i:s') . "\n\n";
    $result = $conn->query("SHOW TABLES");
    $all_tables = [];
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
        $all_tables[] = $row[0];
    }
    $tables_to_backup = empty($tables) ? $all_tables : array_intersect($tables, $all_tables);
    foreach ($tables_to_backup as $table) {
        $sql .= "-- Таблица: $table\n";
        $sql .= "DROP TABLE IF EXISTS `$table`;\n";
        $create_table = $conn->query("SHOW CREATE TABLE `$table`");
        $row = $create_table->fetch_assoc();
        $sql .= $row['Create Table'] . ";\n\n";
        $rows = $conn->query("SELECT * FROM `$table`");
        while ($row = $rows->fetch_assoc()) {
            $values = array_map(fn($v) => $conn->real_escape_string($v === null ? 'NULL' : $v), $row);
            $sql .= "INSERT INTO `$table` VALUES ('" . implode("','", $values) . "');\n";
        }
        $sql .= "\n";
    }
    file_put_contents($filename, $sql);
    return $filename;
}
?>

Похожие новости

Генерация карты сайта Sitemap.xml
Генерация карты сайта Sitemap.xml
Читать
Файловый менеджер
Файловый менеджер
Читать
Управление бэкапами MySQL
Управление бэкапами MySQL
Читать