Öztürk Web | PHP ve cronjob ile site yedekleme ve yedek silme

PHP ve cronjob ile site yedekleme ve yedek silme

1 hafta önce

Okuma Sayısı

540

Konu Kategorisi= Code İpuçları  Kategoriye Git

PHP ve cronjob ile site yedekleme ve yedek silme

PHP ve cronjob ile site yedekleme ve yedek silme

Selamınaleyküm arkadaşlar

Uzun zamandır kendi sitelerimde günlük yedek almak için kullandığım backup dosyamı ve alınan yedeklerin iki günden eski olanlarını otomatik olarak silen dosyamı sizlerle paylaşmak istiyorum. Baştan belirtmekte fayda var bu yedek almak kullandığım kodları github dahil bir çok sitede bulabilirsiniz zaten açıklama satırlarında bu bilgiyi bulabilirsiniz ancak yedekleri silmek için kullandığım kısım bana ait ve elbette istediğiniz gibi kullanabilirsiniz.

Backup dosyasında açıklama satırları her şeyi detaylıca anlatmış. Gerekli yerleri kendinize göre düzenlersiniz. Cronjob komutunuz da sizin belirttiğiniz aralıkta sitenizin tam yedeklemesini otomatik olarak yapacaktır.

Sorun şu ki , eğer düzenli olarak bu yedekleri silmezseniz disk kullanımınızı olumsuz yönde etkileyecektir.  Bu sorunu çözmenin iki yolu var biri yedekleri manuel olarak silmek biride size aşağıda vereceğim kodları kullanmak.

Ben cronjob komutumu her gün saat 03 te backup.php  ve sil.php dosyalarımı çalıştıracak şekilde ayarladım.


Sil.php dosyamda ise iki günden eski backup dosyalarını silmek üzere düzenleme yaptım. Gerekli detayları açıklama satırlarında bulabilirsiniz. Takıldığınız bir yer olursa sormaktan çekinmeyin.

NOT: bu iki dosyayı da sunucu da ki en üst dizine kopyalayın. Kesinlikle public_html yada www gibi klasörlere atmayın

backup.php kodları

// cron komutu
// php -q /home/kök_dizin/backup.php

// Bu komut dosyasi, Cpanel yedeginizi otomatik olarak belli zaman araliklarinda ya farkli bir sunucuya ya da kendi ftp sunucunuza yedek aldirir.
// Guvenlik acisindan public_html ya da www dizinlerinde bu dosyayi bulundurmayiniz.
// Bu komut dosyasi, https://gist.github.com/nikhgupta/1071596 adresinden alintilanmıştır.

// Cpanel Erisimi Icin Gerekli Bilgiler
$cpuser = "user"; // Cpanel'e giris yapmak icin kullanilan kullanici adi
$cppass = "pass"; // Cpanel'e giris yapmak icin kullanilan sifre
$domain = "domain.com"; // Yedeklemesini yapmak istediginiz domain adi
$skin = "paper_lantern"; // Cpanel icin kullanilan tema adi. Guncel surumlerde "paper_lantern" temasi kullanilmaktadir. Eger eski versiyon cpanel kullaniyorsaniz "x" kullanilabilir. Cpanel tema secimi onemlidir, aksi halde script calismaz.

// FTP Erisimi Icin Gerekli Bilgiler
$ftpuser = "user"; // Ftp ile giris yapmak icin kullanilan kullanici adi
$ftppass = "pass"; // Ftp ile giris yapmak icin kullanilan sifre
$ftphost = "ftp.domain.com"; // Site FTP adresi ya da IP adresi
$ftpmode = "homedir"; // Yedegin gonderilecegi yer (kendi hostinginizde yedekleme yapmak icin "homedir", uzak ftp sunucusuna gondermek icin "ftp" kullanilabilir)
$ftpport = "21"; // Port (Varsayilan = 21)
$rdir = "/"; // Yedekleme yapilacak dizin (Varsayilan = / )

// Bildirim Ayarlari
$notifyemail = "example@example.com"; // Sonuclarin gonderilecegi email adresi

// Secure , non-secure mode
$secure = 0; // SSL için 1 olarak ayarlayın (SSL desteği gerektirir), aksi takdirde standart HTTP kullanır

// Web sayfası sonucunun cron günlüğünde görünmesi için 1 olarak ayarlayın
$debug = 0;

// *********** Buradan aşağısını değiştirmeyin *********
if ($secure) {
$url = "ssl://" . $domain;
$port = 2083;
} else {
$url = $domain;
$port = 2082;
}

$socket = fsockopen($url, $port);
if (!$socket) {
echo "Soket bağlantısı açılamadı… Başarısız!\n";
exit;
}
// Kimlik doğrulama dizesini Şifrele
$authstr = $cpuser . ":" . $cppass;
$pass = base64_encode($authstr);
$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&port=$ftpport&rdir=$rdir&submit=Generate Backup";
// POST to cPanel
fputs($socket, "POST /frontend/" . $skin . "/backup/dofullbackup.html?" . $params . " HTTP/1.0\r\n");
fputs($socket, "Host: $domain\r\n");
fputs($socket, "Authorization: Basic $pass\r\n");
fputs($socket, "Connection: Close\r\n");
fputs($socket, "\r\n");

//Bununla bir şey yapmasak bile yanıtı al.
while (!feof($socket)) {
$response = fgets($socket, 4096);
if ($debug) echo $response;
}
fclose($socket);

?>

sil.php kodları

//  cron komutu
// php -q /home/kök_dizin/sil.php

$bugun = date("Y-n-j");
// bu tarih formatı tarihleri sıfır dolgusu olmadan yazar
// iki günden eski dosyaları buluyoruz
$cevir = strtotime('-2 day',strtotime($bugun));
// yedek klasörünün kaç gün silinmeden kalmasını istiyorsanız -2 yerine onu yazın

// buradan aşağısını değiştirmeyin
/****************************************************************/
$dun = date("n.j.Y",$cevir);

$silinecek = "backup-".$dun;

$dizin = "./";
$search_key = $silinecek;

if ($handle = opendir("$dizin") or die ("Dizin acilamadi!")) {
while (false !== ($file = readdir($handle))) {
$search_word = preg_match("/^$search_key/i", "$file");
if(is_file($dizin."/".$file) && $search_word) {
$filename = str_replace("/$search_key/i","$search_key",$file);
echo $filename."
"
;
}
}
closedir($handle);
}
unlink($filename);

İşinizi İnternete Taşımak İstermisiniz ?