From 0ee622e0adafad3ee7a5afbcdcc519c7cca544d6 Mon Sep 17 00:00:00 2001 From: polo Date: Thu, 25 Jun 2026 23:17:35 +0200 Subject: restauration BDD console bin/restore_db.php --- bin/restore_db.php | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100755 bin/restore_db.php (limited to 'bin/restore_db.php') diff --git a/bin/restore_db.php b/bin/restore_db.php new file mode 100755 index 0000000..baa1e67 --- /dev/null +++ b/bin/restore_db.php @@ -0,0 +1,82 @@ +#!/usr/bin/env php +getMessage() . "\n"; + die; + } + } + $file_name = pathinfo($argv[1])['basename']; + $file_data = '../' . file_get_contents($argv[1]); +} + +chdir(dirname(__FILE__)); // /chemin/absolu/bin/restore_db.php +require "../vendor/autoload.php"; +Config::load('../config/config.ini'); +require '../src/model/doctrine-bootstrap.php'; + +// backup sur le système de fichiers en paramètre +if($argc === 2){ + // enregistrer le fichier + if(!file_put_contents(Backup::$backup_dir . '/' . $file_name, $file_data)){ + try{ + throw new RuntimeException("Erreur, impossible d'enregistrer le fichier\n"); + } + catch(RuntimeException $e){ + echo $e->getMessage() . "\n"; + die; + } + } + + echo "Fichier SQL " . pathinfo($file_name)['basename'] . " enregistré dans var/backups/\n"; +} +// choix parmi les backups sur le serveur +elseif($argc === 1){ + // obtenir des fichiers + try{ + $backup_array = Backup::getBackupList(); + } + catch(RuntimeException $e){ + $backup_array = []; + echo $e->getMessage() . "\n"; + } + + $backup_files = []; + $j = 0; + for($i = count($backup_array) - 1; $i >= 0; $i--){ + echo ($j + 1) . '. ' . $backup_array[$i] . "\n"; + $backup_files[$j] = $backup_array[$i]; + $j++; + } + + // saisie utilisateur + $nb = (int)readline("Choisissez un fichier par son numéro : ") - 1; + + if($nb < 0 || $nb >= count($backup_files)){ + echo "Erreur, saisir un numéro dans le choix proposé.\n"; + die; + } + $file_name = $backup_files[$nb]; +} +else{ + echo "Erreur: trop de paramètres\n"; + die; +} + +try{ + Backup::restoreDatabase($entityManager, $file_name); +} +catch(RuntimeException $e){ + echo $e->getMessage() . "\n"; + die; +} +echo "La base de donnée a été restaurée avec le backup: " . $file_name . "\n"; +echo "En cas d'erreur, vous pouvez revenir en arrière en réalisant une nouvelle restauration avec le fichier:\n" . Config::$database . '_' . (new DateTime)->format('Y-m-d') . "_before-restore.sql\n"; -- cgit v1.2.3