Bu kod işinize yarayabilir arkadaşlar.Kod yapısını incelerseniz uzun olmasına dahi mantığı oldukça basit.
- Kod: Tümünü seç
<?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.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>");
}
?>







