|
Mysql yedeğini alıp mail ile yollamak
Jul 22,2007 00:00
by
canawar
// 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.0n"; $headers.="Content-type: text/html; charset=iso-8859-9n"; $headers.="X-Mailer: PHPn"; $headers.="X-Sender: 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=''.$gonderme_tarihi.' tarhinde alınan '.$site.' MySQL veritabanı yedeği '.$dizin.' dizini içindeki '.$yedek_dosya.' 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.0rn"; $headers.="From: ".$FromName." <".$From.">n"; $headers.="To: ".$ToName." <".$To.">n"; $headers.="Reply-To: ".$FromName." <".$From.">n"; $headers.="X-Priority: 1n"; $headers.="X-MSMail-Priority: Highn"; $headers.="X-Mailer: My PHP Mailern"; $headers.="Content-Type: multipart/mixed;ntboundary="".$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;ntboundary="".$IB.""nn"; //plaintext section $Msg.="n--".$IB."n"; $Msg.="Content-Type: text/plain;ntcharset="iso-8859-1"n"; $Msg.="Content-Transfer-Encoding: quoted-printablenn"; // plaintext goes here $Msg.=$Text."nn"; // html section $Msg.="n--".$IB."n"; $Msg.="Content-Type: text/html;ntcharset="iso-8859-1"n"; $Msg.="Content-Transfer-Encoding: base64nn"; // html goes here $Msg.=chunk_split(base64_encode($Html))."nn"; // 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;ntname="".$FileName.""n"; $Msg.="Content-Transfer-Encoding: base64n"; $Msg.="Content-Disposition: attachment;ntfilename="".$FileName.""nn"; //file goes here $fd=fopen ($AttmFile, "r"); $FileContent=fread($fd,filesize($AttmFile)); fclose ($fd); $FileContent=chunk_split(base64_encode($FileContent)); $Msg.=$FileContent; $Msg.="nn"; } } //message ends $Msg.="n--".$OB."--n"; mail($To,$Subject,$Msg,$headers); //syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>"); } ?> |