-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackup_db.php
More file actions
57 lines (46 loc) · 1.58 KB
/
backup_db.php
File metadata and controls
57 lines (46 loc) · 1.58 KB
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
<?php
require 'db.php';
// Charge le .env
try {
loadEnv(__DIR__ . '/.env');
} catch (Exception $e) {
die("Erreur de configuration : " . $e->getMessage());
}
// Clé secrète
$secretKey = $_ENV['DB_SECRET_KEY'];
if (!isset($_GET['key']) || $_GET['key'] !== $secretKey) {
http_response_code(403);
die("Accès refusé.");
}
// CRÉATION DU DOSSIER CACHÉ
$backupFolder = __DIR__ . '/backups/';
if (!file_exists($backupFolder)) {
mkdir($backupFolder, 0755, true);
}
// On empêche quiconque de télécharger les sauvegardes depuis le navigateur
file_put_contents($backupFolder . '.htaccess', "Deny from all");
// EXÉCUTION DE LA SAUVEGARDE
$date = date('Y-m-d_H-i-s');
$filePath = $backupFolder . "secteur_v_backup_{$date}.sql";
// On récupère tes infos depuis le .env
$host = $_ENV['DB_HOST'];
$user = $_ENV['DB_USER'];
$pass = $_ENV['DB_PASS'];
$dbname = $_ENV['DB_NAME'];
// La commande Linux magique pour exporter la BDD
$command = "mysqldump -h " . escapeshellarg($host) . " -u " . escapeshellarg($user) . " -p" . escapeshellarg($pass) . " " . escapeshellarg($dbname) . " > " . escapeshellarg($filePath);
exec($command, $output, $returnVar);
if ($returnVar !== 0) {
die("Erreur lors de la création de la sauvegarde.");
}
// NETTOYAGE : Garder uniquement les 10 dernières
$files = glob($backupFolder . 'secteur_v_backup_*.sql');
rsort($files);
if (count($files) > 10) {
$filesToDelete = array_slice($files, 10);
foreach ($filesToDelete as $file) {
unlink($file);
}
}
echo "✅ Sauvegarde générée avec succès ! (" . count($files) . " fichiers en mémoire)";
?>