Mysql yedeğini alıp mail ile yollama
Jul 22,2007 00:00 by canawar
<?php
// Ayarlar
$saatfarki = 0
;
$tarihsaat = date("d-m-Y H:i:s",(time()+3600*$saatfarki
));
$tarih=date("dmY",(time()+3600*$saatfarki
));
$site="site";
//site adı
$cpanel_user="site.net";
//site user name (cpanel kullanıcı adı)
$dizin="/home/httpd/vhosts/$cpanel_user/private";
// yedek alınacak dizinin adı
$yedek_dosya='backup-'.$tarih.'sql.gz';
// yedek dosyasının adı
$dosya_sil='evet';
// yedek oluşturulduktan sonra eski yedek dosyaları silinsin mi?
$yedek_sil='hayır';
// oluşturulan yedek dosyası silinsin mi?
$email_gonder='evet';
// yedek alındığında e-mail gönderilsin mi?
$dosya_gonder='evet';
// yedek, emaile gönderilsin mi?
$dbuser='user_user';
// veritabanı kullanıcı adı
$dbpass='user_pass';
// veritabanı kullanıcı şifresi
$dbname='user_db';
// veritabanı adı
$dosya_adres="$dizin/$yedek_dosya"
;

// E-Mail Ayarları
$gonderme_tarihi=$tarihsaat
;
$kime='user@user.com'
;
$kime_isim='USER'
;
$kimden='dbbackup@user.net'
;
$kimden_isim='DBUSER'
;
$baslik=$site.' -Veritabanı Yedeği-'.$gonderme_tarihi
;


// Veritabanı yedeğini al
$x=passthru("mysqldump -u$dbuser -p$dbpass $dbname | gzip > $dizin/$yedek_dosya"
);
$y=passthru("chmod 755 $dizin/$yedek_dosya"
);
if (!
$x || !$y) { echo "Veritabanı yedeği alınamıyor. -$x , $y-"
;die(); }

// yedeğin alındığını bildiren email gönder
if ($email_gonder=='evet'
) {
    
$headers="MIME-Version: 1.0\n"
;
    
$headers.="Content-type: text/html; charset=iso-8859-9\n"
;
    
$headers.="X-Mailer: PHP\n"
;
    
$headers.="X-Sender: <PHP>\n"
;
    
$headers.="From: <$kimden>\n"
;
    
$headers.="Return-Path: <$kimden>\n"
;
    
$mesaj=$gonderme_tarihi.' tarhinde alınan '.$site.' MySQL veritabanı yedeği '.$dizin.' dizini içindeki '.$yedek_dosya.' dosyasıdır.'
;
    
mail($kime,$baslik,$mesaj,$headers
);
}

// eski yedek dosyalarını sil
if ($dosya_sil=='evet'
) {
    
chdir($dizin
);
    
$link=@opendir($dizin
);
    if(!
$link
){
        echo
'Belirtilen isimde bir klasör bulunamadı veya belirtilen yol yanlış!'
;die();
    }
    else {
        while(
$dosya=readdir($link
)){
            if (
$dosya!='.' && $dosya!='..' && $dosya!=$yedek_dosya && is_file($dosya
)){
                 
unlink($dosya
);
             }
        }
        
closedir($link
);
    }
}

// yedek dosyasını e-maile gönder
if ($dosya_gonder=='evet'
) {
$TEXT=""
;
$HTML='<b>'.$gonderme_tarihi.'</b> tarhinde alınan<b> '.$site.'</b> MySQL veritabanı yedeği<br><b> '.$dizin.'</b> dizini içindeki <b>'.$yedek_dosya.' </b>dosyasıdır.'
;
#$ATTM=array("/home/myself/test/go.jpg", "/home/myself/test/SomeDoc.pdf");
$ATTM=array($dosya_adres
);
SendMail( "$kimden","$kimden_isim", "$kime","$kime_isim",$baslik,$TEXT,$HTML,$ATTM
);


//echo $HTML;
}

// yedek dosyasını sil
if ($yedek_sil=='evet'
) {
    
chdir($dizin
);
    
$link=@opendir($dizin
);
    if(!
$link){ echo 'Belirtilen isimde bir klasör bulunamadı veya belirtilen yol yanlış!'
;die(); }
    else {
unlink($yedek_dosya
); }
    
closedir($link
);
}

function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html,$AttmFiles
){
$OB="----=_OuterBoundary_000"
;
$IB="----=_InnerBoundery_001"
;
$Html=$Html?$Html:preg_replace("/\n/","{br}",$Text
)
  or die(
"neither text nor html part present."
);
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail."
;
$From or die("sender address missing"
);
$To or die("recipient address missing"
);
     
$headers ="MIME-Version: 1.0\r\n"
;
$headers.="From: ".$FromName." <".$From.">\n"
;
$headers.="To: ".$ToName." <".$To.">\n"
;
$headers.="Reply-To: ".$FromName." <".$From.">\n"
;
$headers.="X-Priority: 1\n"
;
$headers.="X-MSMail-Priority: High\n"
;
$headers.="X-Mailer: My PHP Mailer\n"
;
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n"
;

//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n"
;
$Msg.="\n--".$OB."\n"
;
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n"
;

//plaintext section
$Msg.="\n--".$IB."\n"
;
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n"
;
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n"
;
// plaintext goes here
$Msg.=$Text."\n\n"
;

// html section
$Msg.="\n--".$IB."\n"
;
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n"
;
$Msg.="Content-Transfer-Encoding: base64\n\n"
;
// html goes here
$Msg.=chunk_split(base64_encode($Html))."\n\n"
;

// end of IB
$Msg.="\n--".$IB."--\n"
;

// attachments
if($AttmFiles
){
  foreach(
$AttmFiles as $AttmFile
){
   
$patharray = explode ("/", $AttmFile
);
   
$FileName=$patharray[count($patharray)-1
];
   
$Msg.= "\n--".$OB."\n"
;
   
$Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n"
;
   
$Msg.="Content-Transfer-Encoding: base64\n"
;
   
$Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n"
;
             
   
//file goes here
   
$fd=fopen ($AttmFile, "r"
);
   
$FileContent=fread($fd,filesize($AttmFile
));
   
fclose ($fd
);
   
$FileContent=chunk_split(base64_encode($FileContent
));
   
$Msg.=$FileContent
;
   
$Msg.="\n\n"
;
  }
}
     
//message ends
$Msg.="\n--".$OB."--\n"
;
mail($To,$Subject,$Msg,$headers
);      
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
?>