چنانچه تا کنون از 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 منتقل می کند.
کار تمام شد! به همین راحتی!
hibackup/*