使用 PHP 透過 Crontab 排程固定時間備份 MariaDB並且自動壓縮 .sql 備份檔案|MySQL|Crontab|PHP|MySQL|MariaDB|exec|mysqldump|gzip|伊恩踩坑筆記

上一篇文章有介紹到可以直接備份 MySQL 資料表,只是發現資料如果太多,備份下來的檔案大小高的驚人

所以透過 gzip 把產生出來的 .sql 備份檔案直接自動壓縮

前置作業可以參考:PHP/Crontab|使用 PHP 透過 Crontab 排程固定時間備份 MariaDB(MySQL, Crontab, MySQL, MariaDB)

backup.php

// 設定環境
header('Content-Type: text/html; charset=utf-8');
date_default_timezone_set('Asia/Taipei');
// 設定保存的資料夾位置
$dir = "/var/www/db/";
// 設定檔名
$filename = "dev-" . date("Y-m-d-H-i-s") . ".sql.gz";
// 設定資料庫
$db_host = "localhost";
$db_username = "root";
$db_password = "password";
$db_database = "db";
// 準備 cmd
$cmd = "mysqldump -h {$db_host} -u {$db_username} --password={$db_password} {$db_database} | gzip > {$dir}{$filename}";
// 執行 cmd
exec($cmd);
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
passthru("cat {$dir}{$filename}");

跟上一個版本比,這個版本是不是簡潔很多呢?

實驗過原本 150MB 的 .sql 檔案壓縮後為 28MB

整個大瘦身了!

ING Design 応設計
https://www.theingdesign.com/

--

--

Ian BerLin / 伊恩踩坑筆記
Ian BerLin / 伊恩踩坑筆記

Written by Ian BerLin / 伊恩踩坑筆記

專門寫一些自己曾經踩過的坑,希望你沒踩過 / Web & BackEnd Developer • 台北 • theingdesign.com • IG: @ianakaberlin

No responses yet