2
0

backup.class.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. class backup
  3. {
  4. public static function create()
  5. {
  6. try {
  7. $nameNewFolder = date("Ymd-His");
  8. $newFolder = "/" . DIR_TEMP . $nameNewFolder;
  9. mkdir($newFolder, 0777);
  10. self::dumpMysql($newFolder);
  11. file::copyFolder("/" . DIR_DATAS, $newFolder . "/datas");
  12. $localZip = file::zip($newFolder, DIR_TEMP . $nameNewFolder);
  13. file::deleteFolder($newFolder);
  14. rename($localZip, DIR_BACKUP . $nameNewFolder . ".zip");
  15. alert::recSuccess("BackUp OK :. " . $nameNewFolder . ".zip");
  16. return TRUE;
  17. } catch (Exception $ex) {
  18. alert::recError("BackUp :. Erreur lors de la création");
  19. return FALSE;
  20. }
  21. }
  22. public static function restore(string $_zip)
  23. {
  24. $tmpZip = str_replace(DIR_BACKUP, DIR_TEMP, $_zip);
  25. $tmpDatas = date("Ymd-His") . "-datas";
  26. copy($_zip, $tmpZip);
  27. $folder = file::unzip($tmpZip, DIR_TEMP);
  28. if(self::dumpMysqlRestore(DIR_TEMP . $folder . "/" . DB_NAME . ".Mysql")){
  29. rename(DIR_DATAS, DIR_TEMP . $tmpDatas);
  30. file::copyFolder(DIR_TEMP . $folder . "/datas", DIR_DATAS);
  31. if(is_dir(DIR_DATAS)){
  32. file::deleteFolder(DIR_TEMP . $tmpDatas);
  33. unlink($tmpZip);
  34. file::deleteFolder(DIR_TEMP . $folder);
  35. $zipInfo = pathinfo($_zip);
  36. alert::recSuccess("Restauration du backUp OK :. " . $zipInfo["filename"] . ".zip");
  37. return TRUE;
  38. }
  39. }
  40. alert::recError("Restauration du backUp :. Erreur lors du backup");
  41. return FALSE;
  42. }
  43. public static function dumpMysql(string $_dir)
  44. {
  45. $backupFile = DB_NAME . ".Mysql";
  46. $command = "mysqldump --opt -h " . DB_HOST . " -u " . DB_USER . " -p" . DB_PASS . " " . DB_NAME . " > " . $_dir . "/" . $backupFile;
  47. try {
  48. system($command);
  49. return $backupFile;
  50. } catch (Exception $ex) {
  51. return FALSE;
  52. }
  53. }
  54. public static function dumpMysqlRestore(string $_backupFile)
  55. {
  56. $command = "mysql -h " . DB_HOST . " -u " . DB_USER . " -p" . DB_PASS . " " . DB_NAME . " < " . $_backupFile;
  57. try {
  58. system($command);
  59. return TRUE;
  60. } catch (Exception $ex) {
  61. return FALSE;
  62. }
  63. }
  64. public static function scanFolder()
  65. {
  66. $tempArray = array();
  67. if ($scandir = scandir(DIR_BACKUP)) {
  68. foreach ($scandir as $file) {
  69. $tempFile = NULL;
  70. if (is_file(DIR_BACKUP . $file) === TRUE and $file != "index.html") {
  71. $tempFile["file"] = $file;
  72. $tempFile["size"] = core::formatFileSize(filesize(DIR_BACKUP . $file), 2);
  73. $tempFile["date"] = core::dateFromTimestamp(filemtime(DIR_BACKUP . $file));
  74. $tempFile["timestamp"] = filemtime(DIR_BACKUP . $file);
  75. $tempArray[] = $tempFile;
  76. }
  77. }
  78. }
  79. return $tempArray;
  80. }
  81. public static function last()
  82. {
  83. $return = NULL;
  84. foreach (self::scanFolder() as $key => $value) {
  85. $return[$value["timestamp"]] = $value;
  86. }
  87. krsort($return);
  88. return array_values($return)[0]["file"];
  89. }
  90. public static function delete(string $_nameBackup)
  91. {
  92. if(file_exists("/" . DIR_BACKUP . "/" . $_nameBackup)){
  93. unlink("/" . DIR_BACKUP . "/" . $_nameBackup);
  94. alert::recSuccess("BackUp :. Suppression de " . $_nameBackup);
  95. return TRUE;
  96. } else {
  97. alert::recError("BackUp :. Erreur lors de la suppression de " . $_nameBackup);
  98. return FALSE;
  99. }
  100. }
  101. }