Jelajahi Sumber

Suite bakup

stany.ferer 2 tahun lalu
induk
melakukan
e626f527be

+ 2 - 1
conf.inc.php

@@ -15,9 +15,10 @@ define("DIR_PHP_SUBMIT", DOCUMENT_ROOT . "core/submit/");
 define("DIR_PHP_LIBS", DOCUMENT_ROOT . "core/libs/");
 define("DIR_DATAS_JSON", DOCUMENT_ROOT . "datas/json/");
 define("DIR_DATAS_JSONDATA", DOCUMENT_ROOT . "core/controllers/json/");
-define("DIR_DATAS_TEMP", DOCUMENT_ROOT . "datas/tmp/");
 define("DIR_DATAS_BACKUP", DOCUMENT_ROOT . "backups/");
 define("DIR_DATAS_FILES", DOCUMENT_ROOT . "datas/files/");
+define("DIR_DATAS", DOCUMENT_ROOT . "datas/");
+define("DIR_TEMP", DOCUMENT_ROOT . "tmp/");
 
 define("SFTP_LOCAL", DOCUMENT_ROOT . "datas/sftp/");
 

+ 83 - 0
core/class/backup.class.php

@@ -0,0 +1,83 @@
+<?php
+
+class backup
+{
+    public static function create()
+    {
+        try {
+            $nameNewFolder = date("Ymd-His");
+            $newFolder = "/" . DIR_TEMP . $nameNewFolder;
+            mkdir($newFolder, 0777);
+            $backupFile = self::dumpMysql($newFolder);
+            rename($backupFile, $newFolder . "/" . $backupFile);
+            file::copyFolder("/" . DIR_DATAS, $newFolder . "/datas");
+            $localZip = self::zip($newFolder, DIR_TEMP . $nameNewFolder);
+            self::deleteFolder($newFolder);
+            rename($localZip, DIR_DATAS_BACKUP . $nameNewFolder . ".zip");
+        } catch (Exception $ex) {
+            return FALSE;
+        }
+    }
+
+    public static function deleteFolder(string $_dir)
+    {
+        if(is_dir($_dir)){
+            $command = "rm -r " . $_dir;
+            try {
+                system($command);
+                return TRUE;
+            } catch (Exception $ex) {
+                return FALSE;
+            }
+        }
+    }
+
+    public static function dumpMysql(string $_dir)
+    {
+        $backupFile = DB_NAME . ".Mysql";
+        $command = "mysqldump --opt -h " . DB_HOST . " -u " . DB_USER . " -p" . DB_PASS . " " . DB_NAME . " > " . $backupFile;
+        try {
+            system($command);
+            return $backupFile;
+        } catch (Exception $ex) {
+            return FALSE;
+        }
+    }
+
+    public static function dumpMysqlRestore(string $_backupFile)
+    {
+        $command = "mysql -h " . DB_HOST . " -u " . DB_USER . " -p" . DB_PASS . " " . DB_NAME . " < " . $_backupFile;
+        try {
+            system($command);
+        } catch (Exception $ex) {
+            return FALSE;
+        }
+    }
+
+    public static function filesRestore()
+    {
+        json::create("salaries");
+        json::create("excel");
+        json::create("excel-proweb");
+        json::create("events");
+        json::create("users");
+        json::create("salaries-proweb");
+    }
+
+    public static function zip(string $_dir, string $_name)
+    {
+        $zip = new ZipArchive();
+        $zip_name = $_name . ".zip";
+        $zip->open($zip_name, ZipArchive::CREATE);
+        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($_dir), RecursiveIteratorIterator::LEAVES_ONLY);
+        foreach ($files as $file) {
+            if (!$file->isDir()) {
+                $filePath = $file->getRealPath();
+                $relativePath = substr($filePath, strlen($_dir));
+                $zip->addFile($filePath, $relativePath);
+            }
+        }
+        $zip->close();
+        return $zip_name;
+    }
+}

+ 0 - 35
core/class/db.class.php

@@ -102,39 +102,4 @@ class db
             echo self::$qError[2];
         }
     }
-
-    public static function createBackupMysql(){
-        $backup_file = DIR_DATAS_BACKUP . date("YmdHis") . ".Mysql" . '.gz';
-        $command = "mysqldump --opt -h " . DB_HOST . " -u " . DB_USER . " -p" . DB_PASS ." ". DB_NAME ." | gzip > " . $backup_file;
-        try {
-            system($command);
-            return TRUE;
-        } catch (Exception $ex) {
-            return FALSE;
-        }
-    }
-
-    public static function restoreBackupMysql(string $_backupZip){
-
-        echo "<div>".$_backupZip."</div>";
-        
-        $backupFile = file::decompress($_backupZip);
-        echo "<div>".$backupFile."</div>";
-
-        $command = "mysql -h " . DB_HOST . " -u " . DB_USER . " -p" . DB_PASS ." ". DB_NAME ." < " . $backupFile;
-        try {
-            system($command);
-        } catch (Exception $ex) {
-            return FALSE;
-        }
-
-        file::compress($backupFile);
-
-        json::create("salaries");
-        json::create("excel");
-        json::create("excel-proweb");
-        json::create("events");
-        json::create("users");
-        json::create("salaries-proweb");
-    }
 }

+ 17 - 0
core/class/file.class.php

@@ -120,4 +120,21 @@ class file
             return FALSE;
         }
     }
+
+    public static function copyFolder(string $_folder, string $_target)
+    {
+        if($dir = opendir($_folder)){
+            mkdir($_target);
+            while (($file = readdir($dir))) {
+                if (($file != '.') && ($file != '..')) {
+                    if (is_dir($_folder . '/' . $file)) {
+                        self::copyFolder($_folder . '/' . $file, $_target . '/' . $file);
+                    } else {
+                        copy($_folder . '/' . $file, $_target . '/' . $file);
+                    }
+                }
+            }
+            closedir($dir);
+        }    
+    } 
 }

+ 3 - 3
core/class/proweb.class.php

@@ -256,9 +256,9 @@ class proweb
     public static function downloadExcel(int $_id, string $_file)
     {
         $data = base64_decode(self::getExcelById($_id)["file"]);
-        $fileTemp = fopen(DIR_DATAS_TEMP . $_file, "w");
-        file_put_contents(DIR_DATAS_TEMP . $_file, $data);
+        $fileTemp = fopen(DIR_TEMP . $_file, "w");
+        file_put_contents(DIR_TEMP . $_file, $data);
         fclose($fileTemp);
-        return DIR_DATAS_TEMP . $_file;
+        return DIR_TEMP . $_file;
     }
 }

+ 1 - 1
core/class/sftp.class.php

@@ -170,7 +170,7 @@ class sftp
 
         $stream = @fopen("ssh2.sftp://" . self::$authent . SFTP_REMOTE . $_file, 'r');
         $contents = stream_get_contents($stream);
-        file_put_contents(DIR_DATAS_TEMP . $_file, $contents);
+        file_put_contents(DIR_TEMP . $_file, $contents);
         @fclose($stream);
     }
 }

+ 2 - 2
core/submit/cms.sftp-download-file-remote.php

@@ -6,6 +6,6 @@ if(core::ifPost("from")){
     header('Content-type: application/octet-stream;');
     header('Content-Transfer-Encoding: base64');
     header('Content-Disposition: attachment; filename="'.core::getPost("file").'"');
-    readfile(DIR_DATAS_TEMP.core::getPost("file"));
-    unlink(DIR_DATAS_TEMP.core::getPost("file"));
+    readfile(DIR_TEMP.core::getPost("file"));
+    unlink(DIR_TEMP.core::getPost("file"));
 }

+ 1 - 1
public-cms/test.php

@@ -9,7 +9,7 @@ require_once DIR_PHP_LAYOUTS . "header.php";
 error_reporting(E_ALL);
 ini_set('display_errors', 1);
 
-core::print_r($_GET);
+echo backup::create();
 
 //db::restoreBackupMysql(DIR_DATAS_BACKUP."20230428161012.Mysql.gz");
 

+ 0 - 0
datas/tmp/index.html → tmp/index.html