- #####################
- //設定
- ####################
- //定義備份目錄的名稱
- define('BACKUP_DIR', './myBackups' ) ;
- // 定義資料庫憑證
- define('HOST', 'localhost' ) ;
- define('USER', 'testd!b' ) ;
- define('PASSWORD', 'k^$2y4n9 @#VV' ) ;
- define('DB_NAME', 'test123') ;
- /*
- 定義sql檔案的檔案名稱
- 如果您打算將檔案上傳到Amazon的S3服務,請只用小寫字母
- */
- $fileName = 'mysqlbackup- -'。日期('d-m-Y') 。 '@'.date('h.i.s').'.sql' ;
- // 設定執行時間限制
- if(function_exists('max_execution_time')) {
- if( ini_get('max_execution_time') > 0 ) set_time_limit(0) ;
- }
-
- #########################
-
- //設定結束
-
- #### #######################
-
- // 檢查目錄是否已建立並具有適當的權限
- if (!file_exists( BACKUP_DIR)) mkdir(BACKUP_DIR , 0700) ;
- if (!is_writable(BACKUP_DIR)) chmod(BACKUP_DIR , 0700) ; “.htaccess”文件,它將限制對備份目錄的直接存取。
- $content = '拒絕所有人';
- $file = new SplFileObject(BACKUP_DIR . '/.htaccess', "w") ;
- $file->fwrite($content) ;
-
- $mysqli = new mysqli(HOST , USER , PASSWORD , DB_NAME) ;
- if (mysqli_connect_errno())
- {
- printf("連線失敗: %s", my_5%); 🎜> exit();
- }
- // 介紹訊息
- $return .= "--n";
- $return .= "-- 一個Mysql備份系統n";
- $return .= "--n";
- $return .= '-- 已建立匯出: ' .日期(「年/月/日」)。 ' 在 ' 。日期(“h:i”)。 "nnn";
- $return = "--n";
- $return .= "-- 資料庫:" 。資料庫名稱。 "n";
- $return .= "--n";
- $return .= "-- ----------------------- --- ---------------------------n";
- $return .= "-- ------- --- ----------------------------------------------- ------n";
- $return . = '設定自動提交= 0 ;' ."n" ;
- $return .= '設定FOREIGN_KEY_CHECKS=0 ;' ."n" ;
- $tables = array() ;
- // 探索該資料庫有哪些表
- $result = $mysqli->query('SHOW TABLES' ) ;
- // 循環遍歷「$result」並將內容放入陣列
- while ($row = $result->fetch_row())
- {
- $tables[] = $row[0 ] ;
- }
- //循環遍歷各個表
- foreach($tables as $table)
- {
- //取得各個表的內容
- $result = $mysqli-> ;查詢('SELECT * FROM'.$table);
- // 取得每個表的欄位(列)數
- $num_fields = $mysqli->field_count ;
- // 新增表格資訊
- $return .= "--n" ;
- $return .= '-- 表`' 的表結構。 $表。 '``'。 "n" ;
- $return .= "--n" ;
- $return.= '如果存在則刪除表 `'.$table.'`;' 。 「n」;
- // 取得表格shema
- $shema = $mysqli->query('SHOW CREATE TABLE '.$table) ;
- // 提取表shema
- $tableshema = $shema - > fetch_row() ;
- // 將table-shema 附加到程式碼
- $return.= $tableshema[1].";" 。 「nn」;
- // 循環遍歷每個表格行
- while($rowdata = $result->fetch_row())
- {
- // 準備將資料插入表的程式碼
- $return .= 'INSERT INTO `'.$table .'` VALUES ( ' ;
- //提取每行資料
- for($i=0; $i {
- $return .= '"'.$rowdata[$i] . ""," ;
- }
- // 讓我們刪除最後一個逗號
- $return = substr("$return ", 0, -1) ;
- $return .= ");" ."n" ;
- }
- $return .= "nn" ;
- }
- // 關閉連線
- $mysqli->close() ;
- $return .= 'SET FOREIGN_KEY_CHECKS = 1 ; '。 “n”;
- $return .= '提交; '。 "n" ;
- $return .= 'SET AUTOCOMMIT = 1 ; '。 「n」;
- //$file = file_put_contents($fileName , $return) ;
- $zip = new ZipArchive() ;
- $resOpen = $zip->open(BACKUP_DIR . '/' . $fileName.".zip" , ZipARCHIVE::CREATE) ;
- if( $ resOpen ){
- $zip->addFromString( $fileName , "$return" ) ;
- }
- $zip->close() ;
- $fileSize = get_file_size_unit(filesize(BACKUP_DIR . "/". $fileName . '.zip')) ;
- $message =
備份完成,
- 存檔的名稱為: $檔名它的檔案大小是:$fileSize。
- 此 zip 檔案無法透過網頁瀏覽器存取,因為它儲存在受保護的目錄中。
- 強烈建議將此備份傳輸到另一個檔案系統,使用您最喜歡的 FTP 用戶端下載檔案。
- msg;
- 回顯$message;
-
- // 在 file-size 之後附加適當的 Unit 的函數。
- function get_file_size_unit($file_size){
- switch (true) {
- case ($file_size/1024 return intval($file_size ) ." Bytes" ;
-
- ) ." Bytes;
- case ($file_size/1024 >= 1 && $file_size/(1024*1024) return intval($file_size/1024) ." KB" ;
- break;
- break;
- break;
- break;
break; break; break; break; break; break;值: | return intval($file_size/(1024*1024)) ." MB" ;
}