Gönderen Konu: cPanel/WHM Reseller Kullanıcıları İçin Otomatik Backup Scripti  (Okunma sayısı 5001 defa)

HS-Abdullah

  • Administrator
  • Newbie
  • *****
  • İleti: 45
    • Profili Görüntüle
    • E-Posta
Merhaba Arkadaşlar,

Bu konu hakkında açılmış bir çok konu gördüm. Bende böyle bir script geliştirmeye karar verdim. Şimdi size script'i tanıtacağım. Kullanımı hakkında bilgi vermeye çalışacağım bu konuda.

cPanel en son sürümlerinde x ve x2 teması kaldırılmış. Kullanılmasıda şuanda önerilmiyor. Bu sebeple script x3 temasını kullanan siteler için özeldir. RVskin kullanan siteleri kapsamamaktadır. Özel olarak kullandığınız tema varsa belirtiniz ilgili özelliği scripte ekleriz.

Sistemin genel mantığı Curl ile whm ye bağlanma ardından reseller hesabından alt sitelere ulaşmak ve full backup almak şeklindedir. Scriptin düzenli çalışabilmesi için accountlar arasından geçiş izninin bulunması lazımdır.

Gelelim Script ve Kullanımına:

Öncelikle script'i indiriyoruz. İndirmek İçin Tıklayınız

-- İndireceğiniz Dosya İçeriği:
reseller-backup.php : Yedekleme fonksiyonu dosya içerisinde bulunur.
example.php : Kullanım için örnek bulunmaktadır.
backups.log : İşlem sırasında yedeği alınamayan siteleri içerir
cookies.txt : cPanel bağlanma işlemi sırasında cookie bilgilerini içerir.

Aslında dosya içerisinde yüzeysel olarak example.php de kullanımdan söz ettim.Ancak php ile arası pek iyi olmayan arkadaşlar için burda detay vereceğim.

-- Kullanım:

Dosyalarımızı çektikten sonra bir php dosyası oluşturuyoruz. Örneğin adı yedekle.php olan bir php dosyası oluşturduk.Yedekle.php nin içeriği kullanım isteğimize göre farklı olacaktır.


Burda kafa karıştırıcı olarak backup fonksiyonunda 1 ile belirttiğim yer olabilir. Şayet SSL üzerinden bağlantı istiyorsak (2083/2087) bu değer 1 olacak. Fakat ssl'siz bağlantı istiyorsak bu değer 0 olacaktır(2082/2086).


Şayet Homedir dizinine yedek almak istiyorsak aşağıdaki gibi bir kullanım olacaktır.


<?php
include("reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE",1,"homedir");
?>


Şayet FTP ye yedek almak istiyorsak aşağıdaki gibi bir kullanım olacaktır.


<?php
include("reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE","SSL","ftp","UZAK IP/SITE","UZAK KADI","UZAK SIFRE","UZAK PORT","UZAK DIZIN");
?>


Şayet Passive Modda FTP ye yedek almak istiyorsak aşağıdaki gibi bir kullanım olacaktır.

<?php
include("reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE","SSL","passiveftp","UZAK IP/SITE","UZAK KADI","UZAK SIFRE","UZAK PORT","UZAK DIZIN");
?>


Şayet SCP ye ile uzak sunucuya yedek göndermek istiyorsak aşağıdaki gibi bir kullanım olacaktır.


<?php
include("reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE","SSL","scp","UZAK IP/SITE","UZAK KADI","UZAK SIFRE","UZAK PORT","UZAK DIZIN");
?>


Arkadaşlar söylemem gereken önemli bir konu ise sayfanın timeout süresidir. Şayet cpanel zamanlanmış görevler kısmından yapacaksanız (yapımını anlatacağım) bunu düşünmeye gerek yok. Sayfa zaman aşımına uğramaz. Ancak tarayıcı ile dosyayı (yedek.php) yi çağıracak olursanız timeout'a karşı önlem almamız gerekmektedir. Ancak ne yapalım ki safe_mode bize engel olmakta. Bu sebeple özellikle vurguluyorum zamanlanmış görevlerden değil de tarayıcıdan yedek.php yi çalıştırarak yedek alacaksak özel bir düzenleme yapmamız gerekmekte. Bunun için hemen yukarıda verdiğim kodlarda set_time_limit(0); kodunu ekleyeceğiz. Ancak öncesinde site için safe_mode = Off olması lazım.

Mesela homedir dizinine yedekleme için aşağıdaki gibi olacak, ftp,passive ftp, scp içinde mantık aynı <?php sonrasına set_time_limit(0); yazılacak


<?php
set_time_limit
(0);
include(
"reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE",1,"homedir");
?>


Gelelim zamanlanmış olarak dosyaları çalıştırmaya.Bunun öncesinde örneğin /home/ali/public_html/backup içerisine dosyaları atıyoruz. Yolun herhangi önemli yok örneklemek açısından verdim. Sonrasında ali kullanıcı adının cpaneline giriş yapıyoruz. Cron jobs (zamanlanmış görevler) kısmına geliyoruz. Add New Cron Job kısmında eklemeleri yapıyoruz. Mesela hergün saat 02:30 da yedek almak için:
Minute 30
Hour 02
Day *
Month *
Weekday *
Command php -f /home/ali/www/public_html/backup/yedekle.php

Şeklinde ayarlıyoruz. Curl ile yedekler alınacağı için sunucunun önemi yoktur. Cronjobs olan, php4+ desteği olan ayrıca curl kütüphanesi bulunan  herhangi bir sunucu üzerinden script çalışabilir.Yani yedeklenecek sunucu ile scriptin aynı sunucuda bulunması şart değildir. Güvenlik açısından /home/ali/public_html/backup klasörünü şifrelerseniz daha iyi olur. Ayrıca backups.log ve cookies.txt sayfalarının chmodlarını 0 layınız. Cookies ve backups.log bilgilerinin görülmesini istemeyiz.

Saygılarımla...
Kaynak: http://hostingsiteniz.com/genel/cpanelwhm_reseller_kullanicilari_icin_otomatik_backup_scripti-t665.0.html
« Son Düzenleme: Ağustos 22, 2011, 02:23:51 ÖS Gönderen: HS-Abdullah »