{"flag":true,"single":true,"pageTitle":"Database backup generate with cronjob or cmd using PHP","post":{"id":248,"user_id":"1","slug":"database-backup-generate-with-cronjob-or-cmd-using-php-6q5l","title":"Database backup generate with cronjob or cmd using PHP","body":"<pre class=\"language-markup\"><code>&lt;?php \r\n\/\/ Path: config.php\r\n\/\/ this file contains all the configuration for the backup script\r\n# \/usr\/bin\/php \/home\/xddd\/mysite.com\/backup.php \/\/add cronjob like this\r\n\r\n$host = \"localhost\";  \/\/ host name\r\n$user = \"\";      \/\/ username\r\n$password = \"\";     \/\/ password\r\n$database = \"\"; \/\/ database name\r\n$backupFolder =  'backups\/'; \/\/ backup folder name\r\n$hasOneDriveFolder = true; \/\/ if you have a onedrive folder to save the backup file\r\n$fileName = $database .'-' . date('Y-m-d').'-'. time() . '.sql';\r\n\r\n\/\/ Path: log_error.php\r\n\/\/ Compare this snippet from backup.php:\r\n\r\nif(!function_exists('log_error')){\r\n    function log_error($error){\r\n        $log_file = 'error_log.txt';\r\n        $log = fopen($log_file, 'a');\r\n        fwrite($log, date('Y-m-d H:i:s') . ' ' . $error . PHP_EOL);\r\n        fclose($log);\r\n    }\r\n}\r\n\r\n\r\n\/\/ create dd function\r\nif(!function_exists('dd')){\r\n    function dd(... $data){\r\n        \/\/ if console connection\r\n        if(php_sapi_name() == 'cli'){\r\n            foreach($data as $d){\r\n\r\n                print_r(PHP_EOL);\r\n                \/\/ add color green to output\r\n                print_r(\"\\033[0;32m\");\r\n                print_r($d);\r\n                print_r(\"\\033[0m\");\r\n                print_r(PHP_EOL);\r\n            }\r\n\r\n            print_r(PHP_EOL);\r\n            die();\r\n        }\r\n\r\n        \r\n        echo '&lt;pre&gt;';\r\n        foreach($data as $d){\r\n            print_r(PHP_EOL);\r\n            print_r($d);\r\n            print_r(PHP_EOL);\r\n            \r\n        }\r\n        echo '&lt;\/pre&gt;';\r\n        die();\r\n    }\r\n}\r\n\r\n\r\n\r\ntry{\r\n    \r\n    \/\/ create DB connection \r\n    $dir = dirname(__FILE__) . $backupFolder . $fileName;\r\n  \r\n    $conn = new mysqli($host, $user, $password, $database);\r\n\r\n    \/\/ Check connection\r\n    if ($conn-&gt;connect_error) {\r\n        \/\/ add error to log\r\n        \r\n        log_error(\"Connection failed: \" . $conn-&gt;connect_error);\r\n        die(\"Connection failed: \" . $conn-&gt;connect_error);\r\n    }\r\n\r\n    \/\/ create dump of DB\r\n    exec(\"mysqldump --user={$user} --password={$password} --host={$host} {$database} --result-file={$dir} 2&gt;&amp;1\", $output);\r\n\r\n    \/\/ create backup file from dump\r\n    \/\/ add backup file to zip archive\r\n    $zip = new ZipArchive();\r\n    $zip_name = dirname(__FILE__) .$backupFolder.'\/backup-' .$fileName . '.zip';\r\n    if($zip-&gt;open($zip_name, ZipArchive::CREATE) !== TRUE){\r\n        log_error(\"cannot open &lt;$zip_name&gt;\");\r\n        exit(\"cannot open &lt;$zip_name&gt;\");\r\n    }\r\n\r\n    $zip-&gt;addFile($dir, $fileName);\r\n    $zip-&gt;close();\r\n    \r\n    unlink(dirname(__FILE__) . $backupFolder .$fileName); \/\/delete sql file only need zip file\r\n\r\n    \/\/ remove old backups (older than 7 days)\r\n    $files = glob(dirname(__FILE__) . $backupFolder . '*'); \/\/ get all file names\r\n    foreach($files as $file){ \/\/ iterate files\r\n        if(is_file($file) &amp;&amp; time() - filemtime($file) &gt;= 60*60*24*7) \/\/ if file is older than 7 days 60*60*24*7\r\n            unlink($file); \/\/ delete file\r\n    }\r\n\r\n\/*    if($hasOneDriveFolder){\r\n\r\n        \/\/ add backup file to one drive (using onedrive local folder)\r\n        $onedrive = dirname(__FILE__) . '\/onedrive\/';\r\n        $backup = dirname(__FILE__) . '\/backup-' .$fileName . '.zip';\r\n        copy($backup, $onedrive . $fileName . '.zip');\r\n        \r\n        \/\/ remove backup file from server\r\n        unlink($backup);\r\n\r\n\r\n        \/\/ remove old backups from one drive (older than 7 days)\r\n        $files = glob(dirname(__FILE__) . '\/onedrive\/*'); \/\/ get all file names\r\n        foreach($files as $file){ \/\/ iterate files\r\n            \/\/ dd($files, $file, time() - filemtime($file));\r\n            if(is_file($file) &amp;&amp; time() - filemtime($file) &gt;= 60*60*24*7) \/\/ if file is older than 7 days\r\n                unlink($file); \/\/ delete file\r\n        }\r\n    }*\/\r\n\r\n  \r\n    \/\/ success message\r\n    echo 'Backup created successfully';\r\n    echo PHP_EOL;\r\n    exit(1);\r\n}catch(Exception $e){\r\n    log_error($e-&gt;getMessage());\r\n    die($e-&gt;getMessage());\r\n}<\/code><\/pre>","category_id":"1","is_private":"0","created_at":"2024-07-24T23:58:50.000000Z","updated_at":"2024-10-13T07:58:36.000000Z","category":{"id":1,"user_id":"1","name":"PHP","slug":"php-3ius","parent_id":null,"created_at":"2023-03-14T03:58:19.000000Z","updated_at":"2023-03-14T03:58:19.000000Z"},"user":{"id":1,"name":"R GONDAL","email":"rizikmw@gmail.com","email_verified_at":null,"two_factor_confirmed_at":null,"current_team_id":"1","profile_photo_path":null,"created_at":"2023-03-12T10:49:33.000000Z","updated_at":"2025-01-10T12:59:00.000000Z","profile_photo_url":"https:\/\/ui-avatars.com\/api\/?name=R+G&color=7F9CF5&background=EBF4FF"}},"pageDesc":"&lt;?php  \/\/ Path: config.php \/\/ this file contains all the configuration for the backup script # \/usr\/bin\/php \/home\/xddd\/mysite.com\/backup. - Database backup generate with cronjob or cmd using PHP (Updated: October 13, 2024) - Read more about Database backup generate with cronjob or cmd using PHP at my programming site [SITE]","categories":[]}