blob: c54aaa9d0e2e9f95e50723bb9cc661c99eeb374a (
plain)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#!/usr/bin/env php
<?php
// bin/restore_db.php
declare(strict_types=1);
if($argc === 2){
if(pathinfo($argv[1])['extension'] !== 'sql'){
try{
throw new LogicException("Erreur, charger un fichier au format SQL");
}
catch(LogicException $e){
echo $e->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";
|