cPanel/WHM Reseller Kullanıcıları İçin Otomatik Backup Scripti - Google Fan Webmaster Forum
Google Fan Webmaster Forum  
herşeyi sana yazdım

Geri git   Google Fan Webmaster Forum > Webmaster Genel > Site & Server Administration
KEY
Kayıt ol Articles Sosyal Gruplar Forumları Okundu Kabul Et

Site & Server Administration Server Yönetimi hakkında, .htaccess, Apache configuration ve log analiz, güvenlik

Like Tree2Beğeniler
  • 1 Post By HS_Abdullah
  • 1 Post By sysadmin

Cevapla
 
LinkBack Seçenekler
  1  
Alt 22-08-2011, 15:26:13
 
Standart cPanel/WHM Reseller Kullanıcıları İçin Otomatik Backup Scripti

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- Kodu:
<?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- Kodu:
<?php
include("reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE",1,"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- Kodu:
<?php
include("reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE",1,"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- Kodu:
<?php
include("reseller-backup.php");
backup("IP.ADRES","WHM.KADI","WHM.SIFRE",1,"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 kodlara 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- Kodu:
<?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 ve üstü 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. Ayrıca yedekle.php yi zendlerseniz şifrelerin korunması açısından ekstra önlem alabilirsiniz. Bunun yanında cron ayarını kullanacaksanız gerçekte olmayan bir siteyi temel alarak cron ayarlarını yaparsanız ekstra güvenlik sağlamış olursunuz.

Saygılarımla...
Kaynak: http://hostingsiteniz.com/genel/cpan...ti-t665.0.html
Bu mesajınızı beğenenler: hostingsiteniz
__________________
Faaliyet Belge : YS ( 1154 ) Hostingsiteniz.NET

Konu HS_Abdullah tarafından (22-08-2011 Saat 15:40:41 ) değiştirilmiştir..
Alıntı ile Cevapla
  2  
Alt 22-08-2011, 15:29:56
Üyeliği durduruldu
 
Standart

Müşteriler için çok yararlı bir script, fakat güvenlik konusunda endişelerim var gibi

Elinize sağlık.
Alıntı ile Cevapla
  3  
Alt 22-08-2011, 15:38:01
 
Standart

Alıntı:
AKSERVER Nickli Üyeden Alıntı Mesajı göster
Müşteriler için çok yararlı bir script, fakat güvenlik konusunda endişelerim var gibi

Elinize sağlık.
Merhaba,

Yorumunuz için teşekkür ederim. Scriptin güvenlik bakımından problem olabilecek tek yanı içerisinde whm kullanıcı adı ve whm şifrelerinin bulunması. Aşağıdaki şekilde bunun önüne büyük ölçüde geçebiliriz.

Yedeğin alındığı yerin herhangi bir önemi bulunmamakta. Mesela: whm ye boylebirsiteyok.yok şeklinde bir site eklersiniz. Sonrasında bu site üzerinde cron ayarını gerçekleştirirsiniz. bunun yanında yedekle.php yi zendleyebilirsiniz.
__________________
Faaliyet Belge : YS ( 1154 ) Hostingsiteniz.NET

Konu HS_Abdullah tarafından (22-08-2011 Saat 15:41:49 ) değiştirilmiştir..
Alıntı ile Cevapla
  4  
Alt 22-08-2011, 16:26:24
 
Standart

Merhaba,

Bu arada geçen sene böyle bir konu daha açılmış hatta sizde mesaj yazmışsınız:

http://www.r10.net/cpanel-amp-plesk/...up-script.html
Alıntı ile Cevapla
  5  
Alt 22-08-2011, 16:50:40
 
Standart

Alıntı:
sysadmin Nickli Üyeden Alıntı Mesajı göster
Merhaba,

Bu arada geçen sene böyle bir konu daha açılmış hatta sizde mesaj yazmışsınız:

http://www.r10.net/cpanel-amp-plesk/...up-script.html
Evet ikiside benzer amaç taşımakta. Bu çalışmayla konuyu biraz daha toparladık. Ancak script tamamen kendime aittir. Herhangi bir alıntı yapmadım. O konuda çalıntı gibi anlaşılmasını istemem. İlgili konuyu unutmuştum hatırlattığınız için teşekkür ederim. Arzu eden istediğini kullanabilir elbette.
__________________
Faaliyet Belge : YS ( 1154 ) Hostingsiteniz.NET
Alıntı ile Cevapla
  6  
Alt 22-08-2011, 17:27:07
 
Standart

emeğiniz için teşekkürler.
Bu mesajınızı beğenenler: hostingsiteniz
Alıntı ile Cevapla
  7  
Alt 23-08-2011, 18:50:14
 
Standart

yedekle.php'yi tarayıcı üzerinden açıyorum fakat değişen hiç bir yok sanırım yanlış yapıyorum
__________________
Cixmt2 - Proxy - Server Files - Emre.US
Alıntı ile Cevapla
  8  
Alt 24-08-2011, 00:27:36
 
Standart

Alıntı:
EmreShn Nickli Üyeden Alıntı Mesajı göster
yedekle.php'yi tarayıcı üzerinden açıyorum fakat değişen hiç bir yok sanırım yanlış yapıyorum
Merhaba dilerseniz yaptığınız işlemleri kontrol ederiz. Gerekli bağlantı bilgilerini bizimle paylaşarak destek sistemimize bildirim oluşturursanız sizin için kontrol ederim hocam. Unutmadan script herhangi bir çıktı vermez. Sadece sayfa belirli süre yüklenir ancak yedekleme işlemini gerçekleştirir. Yedekleme işleminin gerçekleşmediğinden emin olunuz.
__________________
Faaliyet Belge : YS ( 1154 ) Hostingsiteniz.NET
Alıntı ile Cevapla
  9  
Alt 08-05-2012, 10:14:07
 
Standart

Abdullah abi merhaba sizin vermiş olduğunuz scrip ile yedeklerimi alıyordum. Datacenter serverları centos 6 ya geçirince yedek almamaya başladı. Curl versiyonu güncellenmiş ne yapmam lazım yardımcı olursanız çok sevinirim. Teşekkürler

Versiyon aşağıdaki gibidir.

curl-7.19.7-26.el6_1.2.x86_64

Konu minemos tarafından (08-05-2012 Saat 10:24:47 ) değiştirilmiştir..
Alıntı ile Cevapla
  10  
Alt 08-05-2012, 11:42:46
 
Standart

Merhaba çalışan bir script buldum kendim test ettim çalışıyor.

http://forums.cpanel.net/f49/automat...em-149029.html

Kod:
<?php
/*
dv at josheli.com
3/4/2004

What it does:
It will request cpanel make full backups of all accounts under a reseller.
It uses cURL, optionally over SSL.

How it works:
Reads all accounts (domain, cpanel and username specifically) from the listaccts page in WHM
Uses cUrl over SSL to call the dofullbackup script of cpanel for each account, using the
account's username and the reseller's password

This script doesn't require cron, but could use it. 
Cron for Windows:
http://www.kalab.com/freeware/cron/cron.htm

Instructions:
1. Make sure you have the curl extension for PHP available
2. Modify "config" variables below, to suit
3. From the command prompt:
    >php bkup_full.php
4. ([Or] Optionally) Set up a cron job to call this script
5. If you're going to have it ftp somewhere, make sure that server is setup correctly
6. Since it could take several minutes to generate the backup and ftp it, 
   and you can't have this request script just waiting around trying to 
   figure out if the backup/ftp cycle is complete, it might be beneficial 
   to have another script check for completion, and delete the generated 
   backup if there was success.

*/

/*** BEGIN CONFIG ***/

$reseller = 'www.domain.co.uk';//your reseller url
$whmUser = 'whm username';//your web host manager user name
$whmPass = 'whm password';//your web host manager password
$bkUpReseller = true;//backup the reseller account also? (it's not in the listaccts page)
$resellerCpTheme = 'x';//if you want to back up reseller, we need the reseller cpanel theme

/*
Destination for the backup...

$destType = '/';// Home Directory
$destType = 'ftp';// Remote FTP Server
$destType = 'passiveftp'; //Remove FTP Server (Passive mode transfer)
*/
$destType = 'ftp';//^^^
$destServer = 'ftp.domain.co.uk';//only if $destServer = 'ftp' or 'passiveftp'
$destUser = 'ftp usernam';//only if $destServer = 'ftp' or 'passiveftp'
$destPass = 'ftp password';//only if $destServer = 'ftp' or 'passiveftp'
$destEmail = 'email';//optional; cpanel will send an email when generation is complete
$destRdir = '/public_html/backup/'; // not quite use on the format for this yet (still testing, will update once known)
$destPort = 21;

$logType = 'echo';//output a log to 'file' or 'echo' or 'none'(no log)
$logFileName = 'bkup_full_log.txt';//can include a path too; only makes sense if $logType = 'file'
$useSsl = false;//if true, requires SSL on your site, or modify this script to use the shared SSL; this hasn't really been tested

/*
A comma-separated list of domain names to backup;
Leave blank to backup all domains found in reseller WHM
If not blank, ONLY the domains listed will be backed up.
If listed, the domains must be listed EXACTLY like they appear on the
list accounts page in WHM, i.e. usually without 'www.'
$domains = 'example1.com,example2.net';
*/
$domains = '';

/*** END CONFIG ***/

/*** BEGIN MAIN ***/
set_time_limit(0);
$time_start = getMicroTime();

if (!extension_loaded('curl')) {
  dl('php_curl.' .PHP_SHLIB_SUFFIX) or die("Could not load curl extension");
}

if($useSsl) {
  $protocol = 'https://';
  $cpPort = '2083';
  $whmPort = '2087';
  writeLog("Using SSL.\n");
}
else {
  $protocol = 'http://';
  $cpPort = '2082';
  $whmPort = '2086';
  writeLog("Not using SSL.\n");
}

$domains = trim($domains);
if(!empty($domains)){
  $chkDoms = true;
  $domains = explode(',',$domains);
  foreach($domains as $d){
    $domains[] = trim($d);
  }
}
else {
  $chkDoms = false;
  $domains = array();
}
//$postFields = urlencode("dest=$destType&server=$destServer&user=$destPass&pass=$destPass&email=$destEmail");
$postFields = '';
$postArray = array();
$postArray['dest'] = $destType;
$postArray['server'] = $destServer;
$postArray['user'] = $destUser;
$postArray['pass'] = $destPass;
$postArray['email'] = $destEmail;
$postArray['rdir'] = $destRdir;
$postArray['port'] = $destPort;

$thingy = '';
foreach ($postArray as $k=>$v)
{
  $thingy.= "$k=".utf8_encode($v).'&';
}
$postFields = substr($thingy,0,-1);


//get the WHM 'list accounts' page
writeLog("Retrieving WHM accounts page...\n");
$acctsPage = getByCurl("$protocol$reseller:$whmPort/scripts/fetchcsv",$whmUser,$whmPass);
//var_dump($acctsPage);

$accounts = array();

$accounts = explode("\n", trim($acctsPage));

//var_dump($accounts);

$account_records = array();

foreach ($accounts as $row) {
        $account_records[] = explode(',', $row);
}

writeLog("Parsing accounts...\n");

//var_dump($account_records);

//die('here');

foreach($account_records as $match) {

    $accDom = '';
    $accUser = '';
    $accTheme = '';
    $r = '';
    $fullUrl = '';

    //$accDom = strip_tags(trim($match[1]));//domain - replaced with below
    $accDom = strip_tags(trim($match[0]));//domain
    if($chkDoms)
      if(!in_array($accDom,$domains)) continue;
    //$accUser = strip_tags(trim($match[3]));//username - replaced with below
    $accUser = strip_tags(trim($match[2]));//username
    //$accTheme = strip_tags(trim($match[14]));//cpanel theme - replaced with below
    $accTheme = strip_tags(trim($match[9]));//cpanel theme

    $fullUrl = "$protocol$accDom:$cpPort/frontend/$accTheme/backup/dofullbackup.html";
    writeLog("Requesting backup of $accDom...\n");
    $r =& getByCurl($fullUrl,$accUser,$whmPass,array('CURLOPT_POST'=>$postFields));
    if($r === false){
      writeLog("Backup request of $accDom caused an unknown error.\n");
    }
    else {
      writeLog("Backup request of $accDom complete.\n");
    }
    //writeLog("\n\n--$accDom--\n\n$r\n\n------\n\n");

}

if($bkUpReseller){
  $fullUrl = "$protocol$reseller:$cpPort/frontend/$resellerCpTheme/backup/dofullbackup.html";
  writeLog("Requesting backup of $reseller...\n");
  $r =& getByCurl($fullUrl,$accUser,$whmPass,array('CURLOPT_POST'=>$postFields));
}

$time_end = getMicroTime();
$time = $time_end - $time_start;
writeLog("Elapsed time: ".round($time,2)." seconds.\n");

/*** BEGIN FUNCTIONS ***/

function getByCurl($url, $user = '', $pass = '',$extra = '') {
  global $useSsl;

  $ch = curl_init();
  //tells curl to save result in a variable instead of outputing to page
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
  curl_setopt ($ch, CURLOPT_COOKIEJAR, './cookie.txt');
  //curl_setopt ($ch, CURLOPT_FOLLOWLOCATION,1); //need safe_mode turning off for this bit
  if(!empty($extra) && is_array($extra)){
    foreach($extra as $opt=>$val){
      switch($opt){
        case 'CURLOPT_REFERER':
          curl_setopt($ch,CURLOPT_REFERER,$val);
        break;
        case 'CURLOPT_POST':
        case 'CURLOPT_POSTFIELDS':
          curl_setopt($ch,CURLOPT_POST,1);
          curl_setopt($ch,CURLOPT_POSTFIELDS,$val);
        break;
      }
    }
  }
  if($useSsl){
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
  }
  $result = curl_exec($ch);
  curl_close($ch);

  return $result;
}

function writeLog($entry) {
  global $logType,$logFileName;

  $method = strtolower($logType);

  $entry = date('r').' - '.$entry;

  if($method == 'file') {
    $fp = fopen($logFileName,'ab');
        fwrite($fp, $entry);
        fclose($fp);
  } elseif($method == 'echo'){
      echo nl2br($entry);//browser
      flush();
  }

  return;
}

function getMicroTime(){
  list($usec, $sec) = explode(" ",microtime());
  return ((float)$usec + (float)$sec);
}

?>
Alıntı ile Cevapla
Cevapla


Bookmarks

Seçenekler

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 23:21:34.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

“İnsanların en hayırlısı, insanlara faydalı olandır”. H.Ş

Hosting by Radore Hosting

İçerik sağlayacı paylaşım sitelerinden biri olan R10.net WebMaster Forum Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. R10.net hakkında yapılacak tüm hukuksal Şikayetler adresi ile iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde R10.net yönetimi olarak tarafımızdan gereken işlemler yapılacak ve Avukatlarımız size dönüş yapacaktır.
ARGUS_OK

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252