Jump to content

Backup database and email it to me


TheUnknown

Recommended Posts

I'm trying to get my db backed up every 24 ours and emailed to me

 

Here is the code

I set it up on a cron job and I get the email but the file is 0 bytes

Any ideas?

<?php
require_once("backend/config.php");


$datestamp = date("Y-m-d");

$filename = "./backups/{$SITENAME}_SQL_Backup-{$datestamp}.sql.gz";
$to = "tracker-AT-torrentstorage.com";
$from = "[email protected]";
$subject = "Database Backup (".$datestamp.")";
$body = "Compressed MySQL Backup ({$SITENAME}_SQL_Backup-{$datestamp}.sql.gz) Attached.";

class mime_mail
{
   var $parts;
   var $to;
   var $from;
   var $headers;
   var $subject;
   var $body;

  

   function mime_mail() {
      $this->parts = array();
      $this->to =  "";
      $this->from =  "";
      $this->subject =  "";
      $this->body =  "";
      $this->headers =  "";
   }


  

   function add_attachment($message, $name =  "", $ctype ="application/octet-stream") {
      $this->parts[] = array (
            "ctype" => $ctype,
            "message" => $message,
            "encode" => $encode,
            "name" => $name
                           );
   }

  

   function build_message($part) {
      $message = $part[ "message"];
      $message = chunk_split(base64_encode($message));
      $encoding =  "base64";
      return  "Content-Type: ".$part[ "ctype"].
         ($part[ "name"]? "; name = \"".$part[ "name"].
         "\"" :  "").

         "\nContent-Transfer-Encoding: $encoding\n\n$message\n";
   }

  

   function build_multipart() {
      $boundary =  "b".md5(uniqid(time()));
      $multipart =
         "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a
MIME encoded message.\n\n--$boundary";

         for($i = sizeof($this->parts)-1; $i >= 0; $i--)
      {
         $multipart .=  "\n".$this->build_message($this->parts[$i]).
            "--$boundary";
      }
      return $multipart.=  "--\n";
   }

  


   function get_mail($complete = true) {
      $mime =  "";
      if (!empty($this->from))
         $mime .=  "From: ".$this->from. "\n";
      if (!empty($this->headers))
         $mime .= $this->headers. "\n";

      if ($complete) {
         if (!empty($this->to)) {
            $mime .= "To: $this->to\n";
         }
         if (!empty($this->subject)) {
            $mime .= "Subject: $this->subject\n";
         }
      }

      if (!empty($this->body))
         $this->add_attachment($this->body,  "",  "text/plain");
      $mime .=  "MIME-Version: 1.0\n".$this->build_multipart();

      return $mime;
   }

  

   function send() {
      $mime = $this->get_mail(false);
      mail($this->to, $this->subject,  "", $mime);
   }
}; 



$command = "mysqldump -u $mysql_user --password=$mysql_pass $mysql_db | gzip > $filename";

$result = system($command);

$data = implode("",file($filename));

$mail = new mime_mail;

$content_type = "application/octet-stream";

$mail->from = $from;
$mail->to = $to;
$mail->subject = $subject;
$mail->body = $body;
$mail->add_attachment($data, "{$SITENAME}-".$datestamp.".sql.gz", $content_type);
$mail->send();

?>

 

 

 

Link to comment
https://forums.phpfreaks.com/topic/77328-backup-database-and-email-it-to-me/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.