+_.偉仔 發表於 2009-1-31 20:30:25

Tenny come~

<?php
// 設定資料庫變數
$dbhost = 'localhost'; //MySQL伺服器位置 (資料庫放同主機則不需更動)
$dbuser = 'your_username'; // MySQL資料庫使用者名稱
$dbpass = 'yourpass'; // MySQL資料庫登入密碼
$dbname = 'database_name'; // 資料庫名稱

// 選擇性設定

$use_gzip = "yes";// 是否需要gzip壓縮 (建議壓縮)
$remove_sql_file = "yes"; // 壓縮後是否刪除原本的sql檔, 建議刪除
$remove_gzip_file = "no"; // 是否需要刪除gzip檔案, 建議不刪除 (除非空間很大, 否則建議刪除)

// 設定路徑

$savepath = "/www/htdocs/dbsender"; // 檔案放置目錄完整路徑, 最後不加斜線 (cpanel通常使用者主目錄在/home/使用者帳號)

$send_email = "yes";// 是否用e-mail傳檔, 若是請填下列兩行
$to      = "you@yourdomain.com";// 收信人
$from    = "r00t@yourdomain.com"; // 寄信人 (可填不用的信箱, 幫助信件自動分類)

$senddate = date("j F Y");

$subject = "MySQL Database Backup - $senddate"; // 信件標題 ($senddate是加入日期)
$message = "Your MySQL database has been backed up and is attached to this email"; // 信件內容

$use_ftp = "yes"; // 是否上傳至FTP伺服器, 若是請填下列四行
$ftp_server = "localhost"; // FTP位置 (例如ftp.server.com)
$ftp_user_name = "ftp_username"; // FTP帳號
$ftp_user_pass = "ftp_password"; // FTP密碼
$ftp_path = "/"; // 上傳至FTP的路徑






// 以下的部份不用更改

      $date = date("mdy-hia");
      $filename = "$savepath/$dbname-$date.sql";      
      passthru("mysqldump --opt -h$dbhost -u$dbuser -p$dbpass $dbname >$filename");
      
      if($use_gzip=="yes"){
                $zipline = "tar -czf ".$dbname."-".$date."_sql.tar.gz $dbname-$date.sql";
                shell_exec($zipline);
      }
      if($remove_sql_file=="yes"){
                exec("rm -r -f $filename");
      }
      
      if($use_gzip=="yes"){
                $filename2 = "$savepath/".$dbname."-".$date."_sql.tar.gz";
      } else {
                $filename2 = "$savepath/$dbname-$date.sql";
      }
      
      
      if($send_email == "yes" ){
                $fileatt_type = filetype($filename2);
                $fileatt_name = "".$dbname."-".$date."_sql.tar.gz";
               
                $headers = "From: $from";
               
                // Read the file to be attached ('rb' = read binary)
                $file = fopen($filename2,'rb');
                $data = fread($file,filesize($filename2));
                fclose($file);
      
                // Generate a boundary string
                $semi_rand = md5(time());
                $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
      
                // Add the headers for a file attachment
                $headers .= "\nMIME-Version: 1.0\n" ."Content-Type: multipart/mixed;\n" ." boundary=\"{$mime_boundary}\"";
      
                // Add a multipart boundary above the plain message
                $message = "This is a multi-part message in MIME format.\n\n" ."--{$mime_boundary}\n" ."Content-Type: text/plain; charset=\"iso-8859-1\"\n" ."Content-Transfer-Encoding: 7bit\n\n" .
                $message . "\n\n";
      
                // Base64 encode the file data
                $data = chunk_split(base64_encode($data));
      
                // Add file attachment to the message
                $message .= "--{$mime_boundary}\n" ."Content-Type: {$fileatt_type};\n" ." name=\"{$fileatt_name}\"\n" ."Content-Disposition: attachment;\n" ." filename=\"{$fileatt_name}\"\n" ."Content-Transfer-Encoding: base64\n\n" .
                $data . "\n\n" ."--{$mime_boundary}--\n";
      
                // Send the message
                $ok = @mail($to, $subject, $message, $headers);
                if ($ok) {
                        echo "<h4><center>Database backup created and sent! File name $filename2</center></h4>";
                } else {
                        echo "<h4><center>Mail could not be sent. Sorry!</center></h4>";
                }
      }
      
      if($use_ftp == "yes"){
                $ftpconnect = "ncftpput -u $ftp_user_name -p $ftp_user_pass -d debsender_ftplog.log -e dbsender_ftplog2.log -a -E -V $ftp_server $ftp_path $filename2";
                shell_exec($ftpconnect);
                echo "<h4><center>$filename2 Was created and uploaded to your FTP server!</center></h4>";
      
      }
      
      if($remove_gzip_file=="yes"){
                exec("rm -r -f $filename2");
      }

?>呢個係資料庫自動備份php

點點備一次????
係咪run 一次 就備一次?

Tenny 發表於 2009-1-31 21:53:11

1# +_.偉仔


建議使用directadmin或phpmyadmin 備份, 再用 bigdump 還原.

chris19198 發表於 2009-5-1 20:53:39

唔係好明bo

甲蟲俠 發表於 2010-11-9 18:38:03

將個檔copy一次咪得囉 :57;
頁: [1]
查看完整版本: Tenny come~