g4 에서 mysql 백업

예전에 짱이님이 올려주신 mysql 백업인데요
g3 버변은 잘되는데 g4에서는 백업파일은 생기는데 안에 내용이 없는 빈파일만 생기더라구요
 
// MySqlDump & tar 압축
if($fname) {
        $cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
        $cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
        `$cmd_1`;
        `$cmd_2`;
        $sql_name = $DB_dir . $fname;
        $tgz_name = $DB_dir . $fname . ".tgz";
        echo "
        <p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
        <p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
부분에서 쉘에서는 정상적으로 백업이 되니까요
 
         $cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
부분이 문제 인것 같은데 뭐가 문제인지를 잘 모르겠습니다.
 
 
=====아래는 전체 소스 원문 입니다.
<?
$sub_menu = "100999";
include_once("./_common.php");
if ($is_admin != "super")
    alert("최고관리자만 접근 가능합니다.", $g4[path]);
$g4[title] = "DB Backup";
include_once("./admin.head.php");
?>
<p>
<table width='450' cellpadding=3 cellspacing=1 class=tablebg>
 <form name='BackUp' method='post' action=''>
 <tr class='ht content subjectbg'>
  <td><b> * MySql DB BackUp</b></td>
 </tr>
 <tr class='ht content contentbg'>
  <td><br><ul>
<?
// 그누보드 관리자 > 그누 MySql DB BackUp
// Create 20041205 by 짱이
// Backup 디렉토리 지정
$DB_dir = "$g4[path]/data/file/DB_BackUp/";
if (!is_dir($DB_dir)) {
 mkdir($DB_dir, 0701);
 echo "<p>☞ 백업디렉토리 <font color=#0080C0>$DB_dir</font>을(를) 생성하였습니다.</p>";
}
if($fdel) {
 $fdel = $DB_dir . "/*";
 `rm -f $fdel`;
}
// MySqlDump & tar 압축
if($fname) {
        $cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . " > " . $DB_dir . $fname;
        $cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
        `$cmd_1`;
        `$cmd_2`;
        $sql_name = $DB_dir . $fname;
        $tgz_name = $DB_dir . $fname . ".tgz";
        echo "
        <p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
        <p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
}
// BackUp 파일 이름 지정 폼
else {
        $fname = $mysql_db . "_" . date("ymd") . ".sql";
        echo "
    ☞ <font color=#0080C0>이전 파일 삭제시 체크하세요!</font>
    <input type='checkbox' name='fdel' value='1' onclick='DB_Delete(this.form)'><br>
        ☞ <font color=#0080C0>BackUp 파일 이름을 지정하세요!</font><br>
        <input type='text' name='fname' value='$fname' size='30' class='ib'>.tgz
        <input type='submit' value=' BackUp ' onclick='DB_BackUp(this.form)'>";
}
?>
  </ul></td>
 </tr>
 <tr bgcolor=#E8F4D8>
  <td><b> * File List</b>&nbsp;&nbsp;<font color=#0080C0><?=$DB_dir?></font></td>
 </tr>
 <tr bgcolor=#F0F8E8>
  <td align=center><table border=0 width=95% cellpadding=2 cellspacing=2>
   <tr class='ht content subjectbg'>
    <td>Name</td><td>Size</td>
               </tr>
<?
// File list, size 보이기
// $files = scandir($DB_dir); // PHP Ver.5
$op_dir  = opendir($DB_dir);
while (false !== ($filename = readdir($op_dir))) {
 $files[] = $filename;
}
$fcount = count($files);
for($i=2; $i <$fcount;  $i++) {
  $fsize = number_format(round(filesize($DB_dir . $files[$i])/1024));
  echo "<tr>
  <td bgcolor=#FFFFFF><a href=$DB_dir$files[$i]>$files[$i]</a></td><td bgcolor=#FFFFFF>$fsize KB</td>
  </tr>";
}
?>
   <tr class='ht content subjectbg'>
    <td colspan=2><?=$fcount - 2?> 개의 파일이 있습니다.</td>
   </tr>
  </table></td>
 </tr></form>
</table>
<script language='javascript'>
    function DB_BackUp(f) {
     if (f.fname.value == '') {
            alert('BackUp 파일명을 입력하세요!');
            f.fname.focus();
            return false;
        }
        f.action = '<?="./_dbbackup.php"?>';
        f.submit();
        return;
    }
    function DB_Delete(f) {
     if (f.fdel.checked) {
         if (confirm('DB_BackUp 디렉토리의 모든 파일이 삭제됩니다.\n\n\이전 파일을 삭제하시겠습니까?')) {
          f.fdel.checked = true;
         }
         else {
          f.fdel.checked = false;
         }
        }
        return;
    }
</script>
<?
include_once("./admin.tail.php");
?>
|

댓글 6개

$cmd_1 = "mysqldump -u" . $mysql_user . " -p" . $mysql_pass . " " . $mysql_db . "

=>

$cmd_1 = "mysqldump -u $mysql_user -p$mysql_pass $mysql_db > $DB_dir$fname";
관심 가져주신 rolo 님에게 감사 드립니다.
그런데 그렇게 해도 같은 현상으로 빈파일만 생성 됩니다.
mysqldump가 경로에 없을 수 있습니다.
절대경로로 한번 해 보세요.
리눅스라면 대부분이 /usr/local/mysql/bin/mysqldump 정도가 될 겁니다.

$cmd_1 = "/usr/local/mysql/bin/mysqldump -u ...
rolo 님 답변이 정답이었네요....^^

이 글 덕분에 저도 백업스킨 붙였습니다....

감사합니다....^^
rolo 님 감사 드립니다.

g3 버젼도 있는데 거기에서는

// MySqlDump & tar 압축
if($fname) {
$cmd_1 = "mysqldump -u" . $cfg[mysql_user] . " -p" . $cfg[mysql_pass] . " " . $cfg[mysql_db] . " > " . $DB_dir . $fname;
$cmd_2 = "tar cfz " . $DB_dir . $fname . ".tgz " . $DB_dir . $fname;
`$cmd_1`;
`$cmd_2`;
$sql_name = $DB_dir . $fname;
$tgz_name = $DB_dir . $fname . ".tgz";
echo "
<p>☞ 백업 파일명 : <a href='$tgz_name'><font color=#800000><u>$fname.tgz</u></font></a></p>
<p>☞ <font color=#0080C0>백업 파일명을 클릭하여 다운 받으세요!</font></p>";
}

이런식으로 되어있고 같은 서버에 g3, g4 를 같이 돌리는데 g3에서는 잘되는데 g4에서만 안되는 것이라서요.
위 방법은 역시 같은 증상으로는 안됩니다.
경로의 문제군요./usr/local/mysql/bin
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기 기존 게시물은 열람만 가능합니다.

+
제목 글쓴이 날짜 조회
19년 전 조회 1,555
19년 전 조회 2,458
19년 전 조회 938
19년 전 조회 1,679
19년 전 조회 1,566
19년 전 조회 1,566
19년 전 조회 1,509
19년 전 조회 1,005
19년 전 조회 1,530
19년 전 조회 1,757
19년 전 조회 1,537
19년 전 조회 1,321
19년 전 조회 1,527
19년 전 조회 1,209
19년 전 조회 1,051
19년 전 조회 1,010
19년 전 조회 1,045
19년 전 조회 1,523
사용자
19년 전 조회 1,519
19년 전 조회 1,593
🐛 버그신고