خیلی از افراد هستن که سایتشون هک میشه و مشکلات خیلی زیادی با گرفتن بک آپ دارن.
کلا گرفتن بک آپ کار خسته کننده و تکراریه به خصوص اینکه ممکنه شما یه هفته بخواید مسافرت برید و فرصت نکنید به سایت سر بزنید در نتیجه گرفتن بک آپ اوتو ماتیک یه نیاز اساسی هستش این بک آپ این امکان رو داره که بک آپ سایت رو به ایمیل شما ارسال کنه و یا در یک شاخه در Home ذخیره کندش
از مدیران انجمن میخوام این تاپیک را مهم قرار بدن تا همه استفاده کنن
تذکر مهم : این داکیومنت برای سرور لینوکس نوشته شده برای سرور ویندوز کار نخواهد کرد
برای گرفتن بک آپ اوتو ماتیک کار های زیر را انجام بدید:
1- ساختن یک شاخه در home :
/home/username/backup_mysql
این شاخه رو با همین اسم درست کنید. لازم به گفتن نیست که username همون یوزر سی پنل یا ftp هستش
نکته: این شاخه خارج از شاخه public_html قرار میگیره و دسترسی از طریق بروزر بهش وجود نداره
2- Chmod شاخه رو 644 قرار بدید.
3- درست کردن یوزر و پس ورد برای دیتابیسی که میخواهید بک آپ آن را بگیرید:
توجه: اگر یوزر و پس ورد دیتابیس را دارید از این گزینه صرف نظر کنید.
3-1- به cpanel -->MySQLDatabase برید
3-2- Create a new user - password رو بزنید.
3-3- روی Add User کلیک کنید.
3-4- روی Add User to Db بزنید و یوزر رو به دیتابیسی که میخواهید بک آپ بگیرید اختصاص بدید.
4- ساختن فایل backup_mysql.php:
با یک php editor یک فایل جدید باز کنید و کد زیر را با اسم backup_mysql.php ذخیره کنید:
سپس این خط ها را تغییر دهید به گونه ای که مشخصات دیتابیس و یوزر و پس ورد شما قرار بگیرد:
خط های زیر را بنا به میل خود تغییر دهید که عبارت از نام و متن ایمیل ارسالی به شماست که حاوی بک آپ است :
در خط های زیر yes و no را بنا به موردی که میخواهید انتخاب کنید:
5- فایل backup_mysql.php را در شاخه ای که در شماره 1 ساختید آپلود کنید.
6- Chmode فایل backup_mysql.php رو روی 644 قرار بدید
7- اجرای اوتومایتک فایل backup_mysql.php در زمان های مشخص:
1-7- برید به cPanel --> Cron Jobs --> Advanced ( Unix Style )
2-7- یک ایمیل برای کرون جاب وارد کنید ( هر ایمیل خواستید موردی ندارد فقط باید ایمیلی وارد شود)
7-3- مشخص کنید که در چه زمان هایی فایل اجرا شود مثلا اگر میخواهید روزی یک بک آپ بگیرید کافی است ساعت و دقیقه اجرای بک آپ را مشخص کنید و بقیه گزینه ها را خالی رها کنید.
7-4- دستور را به صورت زیر در روبروی زمان جرا وارد کنید:
7-5- رویCommit changes کلیک کنید تا تغییرات قرار گیرند.
این مطلب رو از فروم هاستینگ سایتم یاد گرفتم و اینجا هم نوشتم تا همه استفاده کنن
کلا گرفتن بک آپ کار خسته کننده و تکراریه به خصوص اینکه ممکنه شما یه هفته بخواید مسافرت برید و فرصت نکنید به سایت سر بزنید در نتیجه گرفتن بک آپ اوتو ماتیک یه نیاز اساسی هستش این بک آپ این امکان رو داره که بک آپ سایت رو به ایمیل شما ارسال کنه و یا در یک شاخه در Home ذخیره کندش
از مدیران انجمن میخوام این تاپیک را مهم قرار بدن تا همه استفاده کنن
تذکر مهم : این داکیومنت برای سرور لینوکس نوشته شده برای سرور ویندوز کار نخواهد کرد
برای گرفتن بک آپ اوتو ماتیک کار های زیر را انجام بدید:
1- ساختن یک شاخه در home :
/home/username/backup_mysql
این شاخه رو با همین اسم درست کنید. لازم به گفتن نیست که username همون یوزر سی پنل یا ftp هستش
نکته: این شاخه خارج از شاخه public_html قرار میگیره و دسترسی از طریق بروزر بهش وجود نداره
2- Chmod شاخه رو 644 قرار بدید.
3- درست کردن یوزر و پس ورد برای دیتابیسی که میخواهید بک آپ آن را بگیرید:
توجه: اگر یوزر و پس ورد دیتابیس را دارید از این گزینه صرف نظر کنید.
3-1- به cpanel -->MySQLDatabase برید
3-2- Create a new user - password رو بزنید.
3-3- روی Add User کلیک کنید.
3-4- روی Add User to Db بزنید و یوزر رو به دیتابیسی که میخواهید بک آپ بگیرید اختصاص بدید.
4- ساختن فایل backup_mysql.php:
با یک php editor یک فایل جدید باز کنید و کد زیر را با اسم backup_mysql.php ذخیره کنید:
PHP:
<?php
$dbhost = 'localhost';
$dbuser = 'username_backupaccountname';
$dbpass = 'yourpassword';
$dbname = 'username_dbnametobackup';
$savepath = "/home/username/backup_mysql";
$send_email = "yes";
$to = "ausername[at]yourdomain.com";
$from = "anotherusername[at]yourdomain.com";
$senddate = date("j F Y");
$subject = "Full backup of $dbname completed - $senddate";
$message = "See attached zip file for mysqldump of $dbname";
$use_gzip = "yes";
$remove_sql_file = "yes";
$remove_gzip_file = "yes";
// Do not Modify below this line! It will void your warranty! Nah, go crazy go nuts
$date = date("mdy-hia");
$filename = "$savepath/$dbname-$date.sql";
passthru("mysqldump --opt -h$dbhost -u$dbuser -p$dbpass $dbname >$filename");
if($use_gzip=="yes"){
$zipline = "tar -czf ".$dbname."-".$date."_sql.tar.gz $dbname-$date.sql";
shell_exec($zipline);
}
if($remove_sql_file=="yes"){
exec("rm -r -f $filename");
}
if($use_gzip=="yes"){
$filename2 = "$savepath/".$dbname."-".$date."_sql.tar.gz";
} else {
$filename2 = "$savepath/$dbname-$date.sql";
}
if($send_email == "yes" ){
$fileatt_type = filetype($filename2);
$fileatt_name = "".$dbname."-".$date."_sql.tar.gz";
$headers = "From: $from";
// Read the file to be attached ('rb' = read binary)
$file = fopen($filename2,'rb');
$data = fread($file,filesize($filename2));
fclose($file);
// Generate a boundary string
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// Add the headers for a file attachment
$headers .= "\nMIME-Version: 1.0\n" ."Content-Type: multipart/mixed;\n" ." boundary=\"{$mime_boundary}\"";
// Add a multipart boundary above the plain message
$message = "This is a multi-part message in MIME format.\n\n" ."--{$mime_boundary}\n" ."Content-Type: text/plain; charset=\"iso-8859-1\"\n" ."Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
// Base64 encode the file data
$data = chunk_split(base64_encode($data));
// Add file attachment to the message
$message .= "--{$mime_boundary}\n" ."Content-Type: {$fileatt_type};\n" ." name=\"{$fileatt_name}\"\n" ."Content-Disposition: attachment;\n" ." filename=\"{$fileatt_name}\"\n" ."Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" ."--{$mime_boundary}--\n";
// Send the message
$ok =@mail($to, $subject, $message, $headers);
if ($ok) {
echo "<h4><center>Database backup created and sent! File name $filename2</center></h4>";
} else {
echo "<h4><center>Mail could not be sent. Sorry!</center></h4>";
}
}
if($remove_gzip_file=="yes"){
exec("rm -r -f $filename2");
}
?>
سپس این خط ها را تغییر دهید به گونه ای که مشخصات دیتابیس و یوزر و پس ورد شما قرار بگیرد:
PHP:
$dbuser = 'username_backupaccountname';
$dbpass = 'yourpassword';
$dbname = 'username_dbnametobackup';
$savepath = "/home/username/backup_mysql";
$to = "ausername[at]yourdomain.com";
$from = "anotherusername[at]yourdomain.com";
خط های زیر را بنا به میل خود تغییر دهید که عبارت از نام و متن ایمیل ارسالی به شماست که حاوی بک آپ است :
PHP:
$subject = "Full backup of $dbname completed - $senddate";
$message = "See attached file for mysqldump of $dbname";
در خط های زیر yes و no را بنا به موردی که میخواهید انتخاب کنید:
PHP:
$send_email = "yes";
$use_gzip = "yes";
$remove_sql_file = "yes";
$remove_gzip_file = "yes";
5- فایل backup_mysql.php را در شاخه ای که در شماره 1 ساختید آپلود کنید.
6- Chmode فایل backup_mysql.php رو روی 644 قرار بدید
7- اجرای اوتومایتک فایل backup_mysql.php در زمان های مشخص:
1-7- برید به cPanel --> Cron Jobs --> Advanced ( Unix Style )
2-7- یک ایمیل برای کرون جاب وارد کنید ( هر ایمیل خواستید موردی ندارد فقط باید ایمیلی وارد شود)
7-3- مشخص کنید که در چه زمان هایی فایل اجرا شود مثلا اگر میخواهید روزی یک بک آپ بگیرید کافی است ساعت و دقیقه اجرای بک آپ را مشخص کنید و بقیه گزینه ها را خالی رها کنید.
7-4- دستور را به صورت زیر در روبروی زمان جرا وارد کنید:
کد:
php /home/username/backup_mysql/backup_mysql.php > /home/username/backup_mysql/backup_mysql.log
7-5- رویCommit changes کلیک کنید تا تغییرات قرار گیرند.
این مطلب رو از فروم هاستینگ سایتم یاد گرفتم و اینجا هم نوشتم تا همه استفاده کنن
آخرین ویرایش توسط مدیر: