نوشتن اسکریپ بکاپ گیری از دیتا بیس ؟

pix07

Member
نوشتن اسکریپ بکاپ گیری از دیتا بیس ؟
با سلام به تمامی دوستان

جدیدا کار ساخت یه سی ام اس رو به اتمام رسوندم

حالا قصد دارم بخشی رو در نرم افزار تعبیه کنم که مدیر سیستم از طریق اون قسمت قادر به گرفتن بکاپ از اطلاعات به صورت یه فایل mysql DB باشه و همچنین از طریق این بخش قادر باشه بکاپ های قبلی رو restor یا استفاده مجدد کنه .

با تشکر از همه اساتید
 

pix07

Member
با تشکر از شما
درسته اینجا من یه مورد پیدا کردم ام

ظاهرا این سایت مشکل داره
http://www.phpclasses.org/package/1...bases-backup-and-restore-utility.html#ratings
در صفحه بالا موردی هست که ممکن اون چیزی باشه که انتظار دارم ولی حتی پس از ثبت نام هم نتونستم دانلود کنم هنگام کلیک روی دانلود فایل میگه باید ثبتنام کنی حتی پس از چند بار رفرش صفحه هم باز همین مشکل هست از چنین سایتی همچین اشکالی عجیب واقعا!


در هر صورت اگه زحمت بکشید در صورتی که براتون مقدور هست برام آپ کنید خیلی ازتون ممنون میشم ....
یا اینکه یه منبع دیگه رو معرفی کنید
 

20irib

Member
خب از سی ام اس های دیگه یه کلونی بکن...بئ نیست یه نگاهی بندازی و اگه شد اونو ستش کنی
 

pix07

Member
با تشکر از شما
این هم یکی از راهاست ولی کمی وقت گیره و اینکه ریسکش زیاده... ممکنه وقتی رو که برای تفکیک و سازگار کردنش با برنامه ودیتا بیس خودم میزارم . در نهایت کد جاییش خاص باشه که نشه تفکیکش کرد.... و در کل برا مواقعی که دیگه هیچ راهی نباشه ... باید بهش فکر کرد
 

Army.Hidden

Active Member
سلام خدمت شما.
توی سایتی که گفتن کلاس های آماده است .
ولی به این کد هم نگاه کن .
این کد Backup میگیره و روی سرور ذخیره میکنه. وقت نشد به صورت OOP بنویسمش.
PHP:
<?php
#########################################################
///////////////////////////////////////
//------------ Accunt Setting ------------
$db_location = "localhost";
$db_username = "root";  
$db_password = "";    
$db_name = "DataBase Name";
//--------------------------------------
@ $db = new mysqli ($db_location,$db_username,$db_password,$db_name);
if (mysqli_connect_errno()){exit('No Connect To Database !!??');}
$result = $db->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
///////////////////////////////////////
#########################################################
set_time_limit(0);
$time=date(" M j, Y ").' at '.date(" G:i A ");
$query="SELECT @@version;";
    $result = $db->query($query);
    $num_result = $result->num_rows;
    $row = $result->fetch_assoc();
    $version=$row['@@version'];
///////////////////////////////////////
$query="SELECT user();";
    $result = $db->query($query);
    $num_result = $result->num_rows;
    $row = $result->fetch_assoc();
    $userdb=$row['user()'];
///////////////////////////////////////

$Backup="
-- PhpGrp.Com [ Army.Hidden ]
-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- http://www.phpmyadmin.net
-- http://www.Parsa-Net.Com
-- 
-- Host: $db_location
-- Generation Time: $time
-- Server version: `$version`
-- Server User: `$userdb`
-- PHP Version: 5.2.0
-- 
-- Database: `$db_name`
-- 
-- --------------------------------------------------------
";
$query = "SHOW TABLES ;";
                $result = $db->query($query);
                $num_result = $result->num_rows;
                        for ($i=0 ; $i < $num_result ; $i++)
                        {
                            $row = $result->fetch_assoc();
                                $table=$row['Tables_in_'.$db_name];
                                $query_op = "OPTIMIZE TABLE $table;";
                                    $result_op = $db->query($query_op);
                            $Backup.="
-- 
-- Table structure for table `$table`
-- 
";
                                    $query1 = "SHOW CREATE TABLE $table";
                                        $result1 = $db->query($query1);
                                        $num_result1 = $result1->num_rows;
                                                for ($i1=0 ; $i1 < $num_result1 ; $i1++)
                                                {
                                                    $row1 = $result1->fetch_assoc();
                                                    $Backup.=$row1['Create Table'].";\n\n";

                                                        $query2 = "SELECT * FROM $table";
                                                            $result2 = $db->query($query2);
                                                            $num_result2 = $result2->num_rows;
                                                            IF ($num_result2){
$Backup.="
-- 
-- Dumping data for table `$table`
-- 
";
$Backup.="INSERT INTO `$table` VALUES \n";
                                                            
                                                                    for ($i2=1 ; $i2 <= $num_result2 ; $i2++)
                                                                    {
                                                                        $row2 = $result2->fetch_assoc();
                                                                        $Backup.="(";
                                                                        $query3 = "SHOW COLUMNS FROM $table";
                                                                            $result3 = $db->query($query3);
                                                                            $num_result3 = $result3->num_rows;
                                                                                    for ($i3=0 ; $i3 < $num_result3 ; $i3++)
                                                                                    {
                                                                                        $row3 = $result3->fetch_assoc();

                                                                                        $Backup.="'".$row2[$row3['Field']]."',";    
                                                                                        
                                                                                        
                                                                                        
                                                                                        
                                                                                    }
                                                                                    IF($i2==$num_result2){
                                                                                        $Backup.=");\n";
                                                                                    }else{
                                                                                        $Backup.="),\n";
                                                                                    }
                                                                    
                                                                    }
                                                            }    
                                                }
                        }
$Backup=str_replace(',)',')',$Backup);
                $name=$db_name.".sql";
                $H = fopen($name,"w");
                if(fwrite($H,$Backup)){
                    echo 'Backup Was Created';
                }
                fclose($H);
?>
 

pix07

Member
با تشکر از شما از زحمتی که کشیدید
کد بالا بسیار کار آمد است .
آیا کدی برای ری استور کردن این دی بی به طور مستقیم داری ؟
 

pix07

Member
سلام مجدد و تشکر از شما

Army.Hidden جان این دو اسکریپی که برای ریستور کردن دیتا بیس قرار دادید هردو کارشون ایمپورت دیتا بیس هست نه دیتا
یعنی باید یک دیتا بیس خالی وجود داشته باشه تا پس از ایمپورت دیتا بیس بکاپ روی دیتابیس جدید، تیبلها و فیلد ها ودیتا ها ساخته بشه

اما هدف ما اینه که دیتا ها جایگزین دیتا های قبلی بشن برای این کار راهی بجز حذف تیبلها بطور مستقیم از طریق سرور وجود داره ؟ که بشه بعدش دیتا ها رو جایگزین کرد؟
 

pix07

Member
بلاخره یدونه کاملشو پیدا کردم که به صورت فول آژاکس همراه بازبان فارسی و حجم بسیار کم اراعه شده
 

پیوست ها

  • SypexDumper_208.zip
    58.1 کیلوبایت · بازدیدها: 9

Army.Hidden

Active Member
با تشکر از شما از زحمتی که کشیدید
کد بالا بسیار کار آمد است .
آیا کدی برای ری استور کردن این دی بی به طور مستقیم داری ؟
pix07 عزیز . شما خودت کفتی برای ریستور کردن میخواید .
برای فایل بالا هم ممنون
 

جدیدترین ارسال ها

بالا