query("SELECT * FROM $table"); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); $sqlDump .= "TRUNCATE TABLE `$table`;\n"; foreach ($rows as $row) { $keys = array_keys($row); $values = array_map(function($v) use ($pdo) { return ($v === null) ? "NULL" : $pdo->quote($v); }, array_values($row)); $sqlDump .= "INSERT INTO `$table` (`" . implode("`, `", $keys) . "`) VALUES (" . implode(", ", $values) . ");\n"; } $sqlDump .= "\n"; } file_put_contents($dbSql, $sqlDump . "\nSET FOREIGN_KEY_CHECKS = 1;"); // Tar the SQL $dbTar = $backupDir . "backup_db_$date.tar.gz"; shell_exec("tar -czf " . escapeshellarg($dbTar) . " -C " . escapeshellarg($backupDir) . " " . escapeshellarg(basename($dbSql))); unlink($dbSql); // 3. Backup Site Files (Excluding uploads and backups) $siteTar = $backupDir . "backup_site_$date.tar.gz"; $rootPath = realpath("../"); $exclude = " --exclude='./assets/uploads' --exclude='./admin/backups' --exclude='./.git'"; shell_exec("tar -czf " . escapeshellarg($siteTar) . " -C " . escapeshellarg($rootPath) . $exclude . " ."); logActivity($_SESSION['admin_id'], 'BACKUP_GENERATE', "Generated full system backup: Audio, DB, and Site files."); header("Location: system.php?backup=success"); exit; } ?>