مرکز آموزش

نحوه تنظیم بکاپ خودکار از طریق cPanel

  • cpanel, بکاپ, WHM
  • 5

چنانچه تا کنون از cPanel و پنل نمایندگی WHM استفاده کرده باشید متوجه شدید که علارغم امکان ایجاد دستی بکاپ از اطلاعات اکانت ها، امکان ایجاد خودکار بکاپ میسر نیست و لذا ناچارا در زمان نیاز از مدیر هاست میخواهید که بکاپ مورد نظر را به شما ارائه کنند.

با استفاده از اسکریپتی که در این مقاله منتشر کرده ایم براحتی می توانید تنها با داشتن دسترسی به cPanel یا WHM، فرایند ایجاد بکاپ ها را خودکار و حتی به سرور دیگری منتقل کنید!

در این اسکریپت سعی شده است ملاحظات امنیتی نیز در نظر گرفته شود، بنابراین پشتیبانی SSL نیز به آن افزوده شده است. SSL زمانی مورد توجه قرار میگیرد که شما بخواهید فایل اسکریپت را از طریق سرور دیگر (remote) اجرا کنید.

خوب کار را شروع می کنیم...

1- ابتدا یک فایل با نام hibackup.php در پوشه اصلی هاست یا هر سرور دیگر ایجاد و اطلاعات زیر را در آن کپی کنید:

<?php
$cpaneluser = 'user'; // cPanel username
$cpaneluserpass = 'pass'; // cPanel password
$theme = 'paper_lantern'; // Must match current selected cPanel theme ('paper_lantern' in the majority of cases, 'x3' is possible as well)
$ftp = true; // If it's false the backup will be stored in user's home directory, otherwise it will be uploaded via FTP to some custom location
$ftpserver = 'server.hisupport.net'; // Must be localhost for current server or custom hostname for remote FTP upload
$ftpusername = 'user'; // cPanel/SFTP username. Should be the same as cPanel username for local upload or custom for remote upload
$ftppassword = 'pass'; // cPanel/SFTP password. Should be the same as cPanel password for local upload or custom for remote upload
$ftpport = '21'; // SFTP port. Should be 21 in most cases.
$ftpdirectory = '/home/user/hibackup'; // Directory on FTP server to store backups. MUST EXIST BEFORE BACKUP OR BACKUP PROCESS WILL FAIL
// Do not edit below this line
$domain = 'localhost';
$secure = true;
$auth = base64_encode($cpaneluser . ":" . $cpaneluserpass);
if ($secure) {
    $url = "ssl://" . $domain;
    $port = 2083;
    } else {  
    $url = $domain;  
    $port = 2082;
}
$socket = fsockopen('localhost', 2082);
if (!$socket) {  
    exit("Failed to open socket connection.");
}
if ($ftp) {
$params = "dest=scp&server=$ftpserver&user=$ftpusername&pass=$ftppassword&port=$ftpport&rdir=$ftpdirectory&submit=Generate Backup";
} else {
   $params = "submit=Generate Backup";
}
fputs($socket, "POST /frontend/" . $theme . "/backup/dofullbackup.html?" . $params . " HTTP/1.0\r\n");
fputs($socket, "Host: $domain\r\n");
fputs($socket, "Authorization: Basic $auth\r\n");
fputs($socket, "Connection: Close\r\n");
fputs($socket, "\r\n");
while (!feof($socket)) {
   $response = fgets($socket, 4096);
//     echo $response; //uncomment this line for debugging
}
fclose($socket);
?>

2- از آنجاییکه که این فایل به زبان PHP نوشته شده است لازم است اطلاعاتی از سرور هاست و همینطور سرور ریموت (در صورت وجود) در آن وارد کنید.

<?php
$cpaneluser = 'user'; // نام کاربری سی پنل
$cpaneluserpass = 'pass'; // رمز عبور سی پنل
$theme = 'paper_lantern'; // نام قالب استفاده شده در سی پنل که می توانید paper_lantern یا x3 باشد.
$ftp = true; // در صورتیکه که این مقدار را به false تغییر دهید، بکاپ در هاست شما ذخیره می شود که منجر به پر شدن سریع فضای هاست میشود. بنابراین پیشنهاد می شود مقدار بر روی true باقی بماند.
$ftpserver = 'server.hisupport.net'; // نام سروری که بکاپ به آن متقل می شود.
$ftpusername = 'user'; // نام کاربری اکانت FTP
$ftppassword = 'pass'; // رمز عبور اکانت FTP
$ftpport = '21'; // پورت دسترسی به FTP که معمولا 21 است.
$ftpdirectory = '/home/USER/hibackup'; // مسیر و پوشه ای که قرار است فایل بکاپ در آن قرار گیرد.
// هیچ تغییری در کدهای بعدی ایجاد نکنید.

3- در این مرحله لازم است برنامه ای زمانبندی شده برای اجرای فایل و در نتیجه فرایند خودکار بکاپ در نظر بگیریم. بنابراین مطابق با راهنمای استفاده از cronjob دستور زیر را به عنوان یک کرون جاب جدید در سروری که فایل php در آن قرار گرفته است اجرا کنید:

00 2 * * 0 /usr/local/bin/php /home/USER/hibackup.php

این دستور هر شنبه ساعت 2 بامداد یک بکاپ از اطلاعات هاست ایجاد و به مسیر FTP منتقل می کند.

کار تمام شد! به همین راحتی!

از آنجاییکه با هر بار اجرای فایل یک فول بکاپ در مسیر معرفی شده از هاست ایجاد و ذخیره می شود بنابراین در دفعات بعدی فایل بکاپ قبلی نیز در بکاپ جدید قرار گرفته و حجم آن را بیشتر و بیشتر می کند. بنابراین باید بکاپ های قبلی را از بکاپ جدید استثنا کنیم. بطوریکه در هر بار ایجاد بکاپ فقط اطلاعات اکانت بدون بکاپ های قبلی، مد نظر قرار گیرد. برای این کار فایل cpbackup-exclude.conf موجود در پوشه اصلی هاست (Home Directory) را باز و کد زیر را با در نظر گرفتن پوشه ذخیره سازی فایل های بکاپ به آن اضافه کنید.
hibackup/*
اکیدا توصیه می کنیم که اجرای فایل را در فواصل زمانی کوتاه تنظیم نکنید چراکه منجر به کاهش سرعت وبسایت شما خواهد شد.
از آنجاییکه نام کاربری و رمز عبور سی پنل در فایل php وارد می شود، تنها زمانی از این روش استفاده کنید که اطمینان دارید فضای هاست شما امن و غیر قابل نفوذ می باشد. ضمن اینکه توصیه می کنیم سطح دسترسی فایل را به 600 کاهش دهید.

تمامی حقوق مادی و معنوی این مطلب متعلق به HiSupport است.
کپی برداری از مطالب تنها با ذکر منبع و لینک به وبسایت HiSupport بلامانع است.


آیا این آموزش به شما کمک کرد؟