원격지 서버 MYSQL 데이타베이스를 테이블 단위로 로컬 데이타베이스 서버로 백업과 복사를 해주는 PHP 스크립트 소스 코드입니다. 테이블명이 "tc_"로 시작하는 테이블만 복사하도록 조건문이 붙어 있습니다. 불필요하면 "tc_" 를 ""로 수정하시거나 해당 줄을 주석처리하면 되고 mysql 과 mysqldump 의 경로가 다를 수 있으므로 확인하고 다르면 수정해야합니다.
아래 소스 코드를 실행할 때, 로컬 서버 최신 데이타를 덮어버릴 수 있으므로 주의깊게 다루어야 합니다.

<?php
$check_prefix = "tc_";

$db_info['host']     = "192.168.0.10";
$db_info['db']       = "blog";
$db_info['user']     = "root";
$db_info['password'] = "password";

$db_info['date'] = date("Ymd");
if (!file_exists($db_info['date'])) mkdir($db_info['date'],0700);
$db_info['session'] = mysql_connect($db_info['host'], $db_info['user'], $db_info['password']) or die("SQL서버에 접속할 수 없습니다.");

$query = "show databases";
$out1 = mysql_query($query);
if ($out1)
while ($row1 = mysql_fetch_row($out1)) {
 echo $row1[0];
 $db_info['db'] = $row1[0];
 $db_info['outdir'] = $db_info['date'] . "/" . $row1[0];
 if (!file_exists($db_info['outdir'])) mkdir($db_info['outdir'],0700);
 $query = "show tables";
 if (mysql_select_db($row1[0])) {
  echo " +\n";
  $out2 = mysql_query($query);
  if ($out2)
  while ($row2 = mysql_fetch_row($out2)) {
   $db_info['table'] = $row2[0];
   if (strlen($check_prefix)){
    if (substr($db_info['table'],0,strlen($check_prefix))!=$check_prefix) continue;
   }
   $db_info['outfile'] = $row2[0] . ".sql";
   $db_info['outpath'] = $db_info['outdir'] . "/" . $db_info['outfile'];
   echo "\t".$row2[0]."\n";

   $str = "/usr/bin/mysqldump -h".$db_info['host']." -u".$db_info['user']." -p".$db_info['password']." ".$db_info['db']." ".$db_info['table']." > ".$db_info['outpath'];
   passthru($str);
   $str = "/usr/bin/mysql -hlocalhost -u".$db_info['user']." -p".$db_info['password']." ".$db_info['db']." < ".$db_info['outpath'];
   passthru($str);
  }
 } else {
  echo " -\n";
 }
}
?>

웹프로그래머의 홈페이지정보 블로그 http://hompy.info