به من آموزش دهید ( نحوه backup و restore )

pasargad-ir

Active Member
سلام

تا حالا چندین فایل رو برای Backup یا Restore دانلود کردم.

می خوام طوری آموزش ببینم تا خودم مطابق با معیارهام بسازمش.

لطفا فقط به لینک خالی دادن اکتفا نکنید.

آموزش بدبن.

مرسی
 

Mohammadreza

Well-Known Member
بك آپ ؟
منظورت بك آپ از ديتابيس هست فك كنم !
خوب دو تا حال هست ،
اگه مي خواي ايمپورتشم خودت بنويسي كه نوشتن بك اپ درست خودته هر جوري دلت مي خواد بنويس ( از هر چي مي خواي ذخيره كن )
با هر پسونديم دلت مي خواد بك آپ بگير و موقع ايمپورت همونا رو بخون !

اما اگه مي خواي توي phpmyadmin ايمپورت كني ، بهترين نمونه خود phpmyadmin هست ! ( فايل export.php رو بررسي كن )

البته اميدوارم درست متوجه شده باشم سوالتو !
 

foranyone

Well-Known Member
PHP:
<?php require_once("include/session.php");
confirm_logged_in();
backup_tables('localhost','user','pass','db');
/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
   
    include('conf.php');
    include('include/jdate.php');
    //get all of the tables
    if($tables == '*')
    {
        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result))
        {
            $tables[] = $row[0];
        }
    }
    else
    {
        $tables = is_array($tables) ? $tables : explode(',',$tables);
    }
   
    //cycle through
    foreach($tables as $table)
    {
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
       
        $return.= 'DROP TABLE '.$table.';';
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";
       
        for ($i = 0; $i < $num_fields; $i++)
        {
            while($row = mysql_fetch_row($result))
            {
                $return.= 'INSERT INTO '.$table.' VALUES(';
                for($j=0; $j<$num_fields; $j++)
                {
                    $row[$j] = addslashes($row[$j]);
                    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
                    if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                    if ($j<($num_fields-1)) { $return.= ','; }
                }
                $return.= ");\n";
            }
        }
        $return.="\n\n\n";
    }
   
    //save file
    $today = jgmdate("Y-n-j_H-i-s");                
   
   
    $file='backup-'.$today.'.sql';
       
       
    $handle = fopen('back/backup-'.$today.'.sql','w+');

    fwrite($handle,$return);
    fclose($handle);

     if(!$file)
 {
     // File doesn't exist, output error
     die('file not found');
 }
 else
 {
     // Set headers
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=$file");
    header("Content-Type: application/x-sql");
    header("Content-Transfer-Encoding: binary");
    readfile("back/$file");
    readfile("$return");
 }   
   

}
?>

من از این استفاده میکنم عیبش اینه که فایل بک آپ رو سرور هم ذخیره میشه !!

با این تابع میتونی از یک جدول خاص یا کل دیتابیس بک آپ بگیرید
 

Allahparast

Member
سلام این روش از طریق تابع سیستم انجام میشه :
:Backup

PHP:
 <?php
            include 'config.php';
            include 'opendb.php';
  $backupFile = $dbname . date("Y-m-d-H-i-s")             . '.gz';
            $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname             | gzip > $backupFile";
            system($command);
 include 'closedb.php';
            ?>
Restore:
PHP:
mysqlimport -u user_name -p your_password database_name file_name.sql
 

pasargad-ir

Active Member
مرسی مرسی مرسی

یه کم بهم فرصت بدین کد هاتون رو بررسی کنم.

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

k2-4u

Well-Known Member
PHP:
 <?php
            include 'config.php';
            include 'opendb.php';
  $backupFile = $dbname . date("Y-m-d-H-i-s")             . '.gz';
            $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname             | gzip > $backupFile";
            system($command);
 include 'closedb.php';
            ?>
این کد رو هر هاستینگی کار کنه
میشه سرورشو در 2 دقیقه هک کرد

مثلا اینطوری میشه دید که چه فولدر های روی سرور هست (برای linux)
[
PHP:
<?php

exec('ls -l /',$out);
var_dump('<pre>',$out,'</pre>');

?>

---------------
برای backup و resture به نظر من بهترین دستور ها

برای backup از
کد:
 SELECT * INTO OUTFILE 'file_name' FROM tbl_name

و برای Restore از این دستور استفاده کنید
PHP:
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;
http://dev.mysql.com/doc/refman/5.1/en/load-data.html

فقط باید دقت کرد که برای هر جدول یک دستور باید اجرا بشه
شما می تونین به وسیله دستور SHOW TABLES لیست جدول ها رو بگیرین
بعد اونا رو دونه دونه بکنید تو فایل های جدا

--------------------------------
برای backup گیری از فایل های روی سرور بهترین و راحت ترین کار اینه که همه محتوایت رو
در یک فایل زیپ یا چند فایل زیپ فشرده کنید
و بهترین اسکریپ برای این کار dUnzip2
چون هیچ بسته ای لازم نداره
http://www.phpclasses.org/browse/package/2495.html
 

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

بالا